Articles of sequelize.js

用“HasMany”关联创build元素不起作用

我有两个模型: angular色代码 Perms 代码 我正在尝试用他的权限创build一大堆angular色 : function createRoles(models, cb) { var tree = _.map(data.Roles, function (perms, role) { return { name: role, perms: _.map(perms, function (perm) { return { key: perm }; }) }; }); /* tree: [ { name: 'categories_admin', perms: [ [Object], [Object], [Object] ] }, { name: 'users_admin', perms: [ [Object], [Object], […]

将迁移关系重新组合

我想学习Sequelize并尝试遵循几个例子。 我现在的问题是我和Sequelize的迁移混淆了。 当我用这样的CLI创build一个新模型时: sequelize model:create –name Task –attributes title:string,content:string 它为我自动创build一个迁移文件。 如果我然后创build另一个模型“用户”,并添加一个这样的任务模型的关系。 "use strict"; module.exports = function(sequelize, DataTypes) { var User = sequelize.define("User", { username: DataTypes.STRING }, { classMethods: { associate: function(models) { // create one to many relationship User.hasMany(models.Task); } } }); return User; }; 我怎样才能写出这种关系的迁移? 我从2013年的问题中发现一个post,他们说我必须手动这样做,但我不明白这是什么意思。 我没有在文档中find提示。 我还发现一个post,他们说我不应该使用迁移,并使用“force:true”同步function。 但是我不喜欢这样下降桌子。

Sequelize.js:查询没有关系的对象

Sequelize文档在查询关系时非常有限: 例如,我想查询所有没有定义状态或描述的任务的项目(因此,这些项目根本没有任何任务,或者只有只有一个状态或只有一个描述的任务,但是不是都)。 你可能会认为这样的事情会工作: Project.findAll({ include: [{ model: Task, where: { $or: { state: null, description: null } } }] }); 但是,这不起作用,因为它不会返回任何没有任何任务的Project 。

Sequelize通过Unix套接字连接到Postgres

我想通过Unix套接字(不通过localhost )使用Sequelize连接到Postgres。 Postgres被configuration为接受来自用户pgdba Unix套接字连接。 所有从psql命令行工作。 所以Pg端正确configuration。 我似乎无法findSequelizeconfiguration,虽然支持Unix套接字。 最近我能find的是mysql,我已经适应了Pg,但似乎没有工作: var sequelizeConfig = { dialect: 'postgres', dialectOptions: { socketPath: '/home/pgdba/data/5432/.s.PGSQL.5432', } port: 5432 }; var sequelize = new Sequelize('fooDb', 'pgdba', 'passwd', sequelizeConfig); 我在启动应用时遇到的错误: Unable to connect to the database: +23ms { [SequelizeConnectionError: pg_hba.conf rejects connection for host "127.0.0.1", user "pgdba", database "fooDb"] name: 'SequelizeConnectionError', message: 'pg_hba.conf rejects […]

Sequelize:在创build和更新之前计算值

我的问题类似于保存前的Sequelize计算值 ,但不完全相同。 我也有一个模型,其中一个字段将被设置,另一个字段将不会被设置,但应该在每次对数据库执行保存操作之前进行计算。 我试图通过使用钩子来实现这一点。 var Foo = sequelize.define( 'foo', { bar: { type: Sequelize.TEXT, allowNull: false }, baz: { type: Sequelize.TEXT, allowNull: false } }, { freezeTableName: true, timestamps: false, hooks: { // beforeCreate: setBaz // beforeUpdate: setBaz beforeValidate: setBaz } } ); function setBaz(foo) { foo.baz = foo.bar + "_baz"; } 这适用于创build而不是更新现有的元素。 Foo.create({bar: "bar"}); […]

如何删除postgresql中的元素json

在图片中, node_info列是json []的types,现在我想通过Nodejs删除数组中的一个元素ORM sequelize function demo(){ const removeQuery = { where: { name: _name }, raw: true } const updateNode = { node_info: db.sequelize.fn('array_remove', db.sequelize.col('node_info'), JSON.stringify({uuid: uuid})) } db.Config.update(updateNode, removeQuery); } 但我得到这个错误: 错误:无法识别jsontypes的相等运算符查询失败PostgreSQL说:无法识别jsontypes的相等运算符 我将不胜感激任何帮助,可以给我! 谢谢 :)

Passport身份validation将失败并显示关联的模型

我在数据库build模方面做了一个补充,我想把我的用户附加到一个特定的公司。 我遵循Sequelize文档来创build用户和公司之间的一对一关系,但似乎已经搞砸了我的身份validation,因为代码的引入已经将每次提交的login提交给我的身份validation的failureRedirect部分码。 有没有人遇到类似的问题? 用户模式: var bcrypt = require('bcrypt-nodejs'); module.exports = function(sequelize, DataTypes) { var User = sequelize.define('user', { user_id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, firstName: { type: DataTypes.STRING, field: 'first_name' }, lastName: { type: DataTypes.STRING, field: 'last_name' }, email: { type: DataTypes.STRING, isEmail: true, unique: true }, password: DataTypes.STRING, organizationId: { type: […]

根据事务处理钩子

我想在我的用户模型上的afterCreate上创build一个sequelize挂钩。 当我只是创build一个没有交易的用户时,它工作得很好。 但是如果我在事务中运行我的创build语句挂钩运行之前提交。 用户模型挂钩 hooks: { afterCreate: userModule.NewUserHook, afterBulkCreate: userModule.NewUserHook } 钩子function NewUserHook: function NewUserHook(user, options){ console.log('Inside hook'); } 交易在options.transaction中是可以接受的。 在交易提交之后,有没有办法挂钩?

pipe理数据库国际化的最佳方法

我有一些麻烦,在我的数据库中pipe理我的i18n 现在我的应用程序中只有两种语言可用,但为了可扩展性,我希望以“最好”的方式来实现。 我可以重复像description_fr, description_en所有字段description_fr, description_en但我完全没有这个舒适。 我现在所做的是一个外部表格,将其称为content ,其架构如下所示: id_ref => entity referenced id (2) type => table name (university) field => field of the specific table (description) lang => which lang (fr, en, es…) content => and finally the appropriate content. 我认为精确可以是重要的,我使用sequelizeJS作为ORM。 所以我可以使用一个有用的钩子afterFind,afterCreate和afterUpdate。 所以每当我想find一个资源的例子,find它后,我的钩子检索这个资源的所有内容,并确定我的对象与货物价值。 它的工作,但我不爱这个。 但是我有这个麻烦: 这大大增加了我对数据库的请求数量:例如,如果我select50行,我必须做50个请求更多..,而只是一个特定的模型。 如果我有嵌套模型,它是指数… 那么,通过内容提取数据是非常复杂的。 示例find具有特定名称的大学很复杂。 而且这是更新等很多工作… 所以我想知道,如果这是一个好主意,直​​接在相关表中保存为JSON,数据。 就像是 { fr : […]

使用sequelize查找“modelA”的所有实例,而不使用“modelB”的相关实例

我正在使用sequelize ,node.js模块。 我想find没有ModelB关联实例的ModelA的所有实例。 ModelA的每个实例都有ModelB的许多实例。 这是我目前没有工作的尝试。 ModelA.findAll({ logging: console.log, where: { //- Where number of ModelB === 0? } include: [ { model: ModelB, where: { //- Where doesn't exist? }, }, ], }) 我包括了logging:console.log ,以显示它需要输出一个我可以在别处运行的mysql查询,这就是为什么我不只是在返回所有用户之后在promise链中过滤下一个promise的用户。