如何在SailsJs中使用Sequelize
水线是一个很好的ORM,但我注意到有许多function还没有出现在水线上,但Sequelize已经有了。 所以我决定改用sequelize,但仍然使用Sails来处理其他的事情。 我有search教程如何切换到sequelize,但没有。 我怎样才能取代水线为航行Js的续集?
我也推动了续集,最近有两个项目出来,所以我想宣布它们。
帆-钩sequelize:
它遵循Manuel Darveau的回答,它将获取你所有的模型,通过续集导入并作为一个全局variables提供你的模型,你可以使用与migrate: 'drop'
相同的方式强制同步同步migrate: 'drop'
帆形钩-sequelize-蓝图
Sails blueprints为我节省了很多时间,所以我写了一个fork来处理sequelize,它的工作方式和原来的蓝图一样,你仍然会有相同的蓝图configuration,比如rest
, shortcuts
, prefix
等等因为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: {} } };
而已。