Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在SailsJs中使用Sequelize_Node.js_Express_Sails.js_Sequelize.js_Waterline - Fatal编程技术网

Node.js 如何在SailsJs中使用Sequelize

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导入,并将您的模型作为全局变量提供,您可以使用与

Waterline是一个优秀的ORM,但我注意到Waterline上有许多功能还没有出现,但Sequelize已经有了。所以我决定改用sequelize,但在其他方面仍然使用Sails。我有如何切换到sequelize的搜索教程,但没有。如何在sails Js中替换sequelize的吃水线?

我也开始使用sequelize,最近有两个项目问世,所以我想宣布它们

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

Sails blueprints为我节省了很多时间,因此我编写了一个fork来使用sequelize,它的工作方式与原始blueprints相同,并且您仍然拥有相同的blueprints配置,例如
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,修复了这两个问题(现在已经在生产中测试和工作了好几个月):