Node.js 如何在SailsJs中使用Sequelize
Waterline是一个优秀的ORM,但我注意到Waterline上有许多功能还没有出现,但Sequelize已经有了。所以我决定改用sequelize,但在其他方面仍然使用Sails。我有如何切换到sequelize的搜索教程,但没有。如何在sails Js中替换sequelize的吃水线?我也开始使用sequelize,最近有两个项目问世,所以我想宣布它们 它遵循Manuel Darveau的答案,它将获取您的所有模型,通过sequelize导入,并将您的模型作为全局变量提供,您可以使用与迁移相同的方式强制sequelize同步:'drop' Sails blueprints为我节省了很多时间,因此我编写了一个fork来使用sequelize,它的工作方式与原始blueprints相同,并且您仍然拥有相同的blueprints配置,例如Node.js 如何在SailsJs中使用Sequelize,node.js,express,sails.js,sequelize.js,waterline,Node.js,Express,Sails.js,Sequelize.js,Waterline,Waterline是一个优秀的ORM,但我注意到Waterline上有许多功能还没有出现,但Sequelize已经有了。所以我决定改用sequelize,但在其他方面仍然使用Sails。我有如何切换到sequelize的搜索教程,但没有。如何在sails Js中替换sequelize的吃水线?我也开始使用sequelize,最近有两个项目问世,所以我想宣布它们 它遵循Manuel Darveau的答案,它将获取您的所有模型,通过sequelize导入,并将您的模型作为全局变量提供,您可以使用与
rest
,快捷方式
,前缀
等等,因为waterline使用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: {}
}
};
就是这样。查看Manuel Darveau的这篇文章。这篇文章也使用sequelize迁移吗?sequelize迁移实际上与CLI配合使用,因此您可以在任何地方进行迁移,您只需要一个包含数据库连接的config/config.json,生成迁移文件,添加一些列,就可以了。@FXCesinha,当我想使用多个连接时,我该怎么办。这个例子并不适用。您的“用户”模型返回一个错误:“ReferenceError:用户未定义”。我只想在这个极好的答案中添加一点,即如果您想在运行时为db用户解密并注入机密(用户名和pswd),您必须重新加载(重新初始化)钩子。如果您想同时连接到多个DBs(Sequelize支持这些DBs),那么在当前版本的钩子上就无法做到这一点。幸运的是,我已经制作了一份PR,修复了这两个问题(现在已经在生产中测试和工作了好几个月):