如何在SailsJs中使用Sequelize

Mig*_*uel 11 node.js express sequelize.js sails.js waterline

水线是一个优秀的ORM,但我注意到有很多功能在水线上还没有,但Sequelize已经有了.所以我决定改用sequelize但仍然使用Sails来完成其他事情.我有搜索教程如何切换到续集但没有.如何在帆Js中替换Waterline for sequelize?

FXC*_*nha 14

我也推进了sequelize,最近有两个项目,所以我想宣布它们.

帆-钩sequelize:

它遵循Manuel Darveau的答案,它将获取所有模型,通过sequelize导入并将您的模型作为全局变量提供,您可以使用相同的方式强制进行续集同步 migrate: 'drop'

帆形钩-sequelize-蓝图

帆蓝图为我节省了很多时间,所以我写了一个叉sequelize工作,它的工作比原来的蓝图以同样的方式,您也还是有相同的蓝图配置,如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
Run Code Online (Sandbox Code Playgroud)

.sailsrc

"hooks": {
    "blueprints": false,
    "orm": false,
    "pubsub": false
}
Run Code Online (Sandbox Code Playgroud)

connections.js

somePostgresqlServer: {
    user: 'postgres',
    password: '',
    database: 'database',
    dialect: 'postgres',
    options: {
        dialect: 'postgres',
        host   : 'localhost',
        port   : 5432,
        logging: true
   }
}
Run Code Online (Sandbox Code Playgroud)

你的模型定义

// 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: {}
  }
};
Run Code Online (Sandbox Code Playgroud)

而已.