水线是一个很好的ORM,但我注意到有很多功能在水线上还没有,但Sequelize已经有了。所以我决定改用sequelize但仍然使用Sails来完成其他事情。我有搜索教程如何切换到续集但没有。如何在帆Js中替换Waterline for sequelize?
水线是一个很好的ORM,但我注意到有很多功能在水线上还没有,但Sequelize已经有了。所以我决定改用sequelize但仍然使用Sails来完成其他事情。我有搜索教程如何切换到续集但没有。如何在帆Js中替换Waterline for sequelize?
我也推进了sequelize,最近有两个项目,所以我想宣布它们。
它遵循Manuel Darveau的答案,它将获取所有模型,通过sequelize导入并将您的模型作为全局变量提供,您可以使用相同的方式强制进行续集同步 migrate: 'drop'
Sails蓝图为我节省了很多时间,所以我写了一个与sequelize一起工作的分叉,它的工作原理与原始蓝图相同,你仍然会有相同的蓝图配置,比如 rest
, shortcuts
, prefix
等等,因为水线用populateEach()函数填充模型,所以它使用 include: [{ all: true }]
结果是一样的。
一个完整的例子:
$ npm install sails-hook-sequelize
$ npm install sails-hook-sequelize-blueprints
$ npm install sequelize
$ npm install pg pg-hstore
$ npm install continuation-local-storage
.sailsrc
"hooks": {
"blueprints": false,
"orm": false,
"pubsub": false
}
connections.js
somePostgresqlServer: {
user: 'postgres',
password: '',
database: 'database',
dialect: 'postgres',
options: {
dialect: 'postgres',
host : 'localhost',
port : 5432,
logging: true
}
}
你的模型定义
// user.js
module.exports = {
attributes: {
name: {
type: Sequelize.STRING,
allowNull: false
},
age: {
type: Sequelize.INTEGER
}
},
associations: function() {
user.hasMany(image, {
foreignKey: {
name: 'owner',
allowNull: false
}
});
},
options: {
tableName: 'user',
classMethods: {},
instanceMethods: {},
hooks: {}
}
};
而已。