问题 如何在SailsJs中使用Sequelize


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


6684
2018-06-11 23:05


起源

查看这篇文章 groups.google.com/d/msg/sailsjs/ALMxbKfnCIo/H2RcRUnnFGEJ 作者:Manuel Darveau。 - Dário


答案:


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

帆-钩sequelize:

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

帆形钩-sequelize-蓝图

Sails蓝图为我节省了很多时间,所以我写了一个与sequ​​elize一起工作的分叉,它的工作原理与原始蓝图相同,你仍然会有相同的蓝图配置,比如 restshortcutsprefix 等等,因为水线用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: {}
  }
};

而已。


13
2017-08-02 03:03



这是否也使用续集迁移? - nahtnam
Sequelize迁移实际上适用于CLI,因此您可以在任何地方进行迁移,您只需要包含数据库连接的config / config.json,生成迁移文件,添加一些列并完成。 - FXCesinha
@FXCesinha,当我想使用多个连接时该怎么办。 stackoverflow.com/questions/36565379/... - Milkncookiez
此示例不能正常工作。您的“用户”模型返回错误:“ReferenceError:未定义用户”。 - alvaropaco
@alvaropaco看一下示例应用程序 github.com/cesardeazevedo/sails-hook-sequelize-blueprints/tree/... - FXCesinha