Articles of sequelize.js

根据belongsToMany关系字段进行过滤

使用链接表来过滤数据是不可能的。 有两个表教师和俱乐部。 他们有关如何belongsToMany。 我需要让所有的教练club_id =值。 教练模型: sequelize.define('Instructor', { instance_id: DataTypes.INTEGER, name: DataTypes.STRING(255) }, { tableName: 'instructors', timestamps: false, classMethods: { associate: function (models) { Instructor.belongsToMany(models.Club, { through: 'InstructorClub' }); } } }); 俱乐部模式: sequelize.define('Club', { instance_id: DataTypes.INTEGER, name: DataTypes.STRING }, { tableName: 'clubs', timestamps: false, classMethods: { associate: function (models) { Club.belongsToMany(models.Instructor, { through: 'InstructorClub' […]

如何在模型和控制器之间传递一个查询结果

我的问题是以下几点: 我有nodejs + expressjs,然后用generator-express生成一个mvc项目,所以我有mysql + sequelize + gulp应用程序。 我连接到数据库,并在模型中查询,但我不能将结果传递给控制器​​,并在屏幕上打印。 而不是我得到一个错误,该variables是未定义的。 模型(regiones.js)的代码是: module.exports = function (sequelize, DataTypes) { var regiones = sequelize.define('regiones', { idregion: DataTypes.INTEGER, nombre: DataTypes.STRING }, { classMethods: { encontrar : function(){ sequelize .query('SELECT * FROM regiones', { raw: true }) .spread(function(resul, m){console.log(resul); return resul;}); } } }); return regiones }; 控制器(home.js)的代码是: var express […]

仅当active = true时,才会将ORM包含模型

我怎样才能findid:1的所有订单,只有当这个项目有active = true时才包括项目? 否则会有空arrays… Order.findAll({ where: { id: 1 }, include: [ { model: Item, where: sequelize.and({'active' : true }) } ] }).then(function(order) { callback(null, order); }); 这显示我只有订单在哪里有一些项目与积极=真。 我想显示所有订单与ID:1和项目作为子数组…

Sequelize.js急切地在多对多的表中加载

我有两个表,用户和MControllers。 他们通过称为历史的另一个表具有多对多的关系,定义如下: var History = sequelize.define("History", { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, message: { type : DataTypes.STRING, allowNull : false } }, { timestamps: true, updatedAt: false, classMethods: { associate: function(models) { } } }); 我做了这样的协会: MController.belongsToMany(User, {through: History, onDelete: 'cascade' }); User.belongsToMany(MController, {through: History, onDelete: 'cascade' }); 现在,我需要使用User表格进行热切查询。 像这样的东西: historyEntity.findAll({ […]

nodejs + sequelize :: include,如果需要false

我有以下层次的对象: 用户 父母(hasOne) 孩子(hasMany) 一旦我有一个用户对象,即时通讯尝试加载相关的父对象以及它的一些子对象。 以下作品: user.getParent({ include: [{ model: Child }] }).then(function(parent) { var children = parent.children; }); 但如果我想有select地加载一些父母的孩子,像这样: user.getParent({ include: [{ model: Child, where: { gender: 'FEMALE' } }] }).then(function(parent) { var daughters = parent.daughters; }); 如果父母有一个或多个女儿,则查询起作用,并且将父母数据和所有女儿的数据一起获得。 然而,如果父母只有儿子,返回的父对象是null .. 我想,如果父母没有女儿,父对象应该仍然是与children = null或children = [] ..解决.. 另外,如果我想在加载父项时简单地加载一些子项,我该如何去做呢? 谢谢

在Express路由器里创buildsequelize事务

我正在尝试使用sequelize事务作出rest请求,不幸的是它不起作用: undefined is not a function 这意味着sequelize.transaction是未定义的,sequelize被导入,但没有实例化在我的路线中使用: router.post('/', secret.ensureAuthorized, function(req, res) { var sequelize = models.sequelize; var newpost; sequelize.transaction({autocommit: false}, function (t) { return models.post.build().updateAttributes({ title: req.body.title, shortdescription: req.body.description.substring(0,255), description: req.body.description, titleImage: req.body.titleImage, link: req.body.link, userid: req.body.userid }, {transaction: t}).then(function(post){ newpost = post; // create categories var tags = req.body.categories; models.hashtag.bulkCreate(tags, {transaction: t}).then(function(){ newpost.setTags(tags, {transaction: […]

passportjs无法validation快速会话

我正在使用passportjs来validation我的快速应用程序。 我所做的与教程代码非常相似,但validation会话总是让我烦恼。 在我的主要工作stream程中,我使用本地策略validation用户 passport.authenticate('local', function (err, user, info) { if (err) { req.flash('error', { msg: err.message }); return res.redirect('back'); } if (!user) { // punish abuser… }) .catch( function (err) { req.flash('error', { msg: err.message }); return res.redirect('back'); }); } else { // Log user in debug('Info: ' + 'Logging in'.green.bold); req.logIn(user, function (err) { […]

N:使用sequelizejs加载(包含)

所以我发现自己陷入了麻烦,试图在M:N关系中使用include加载特性 用户模型关系: User.belongsToMany(models.rol, { through: { model: models['usuario_rol'] }, as: { plural: 'roles', singular: 'rol' }, foreignKey: 'idusuario' }); rol模型关系: Rol.belongsToMany(models.usuario, { through: { model: models['usuario_rol'] }, foreignKey: 'idrol' }); 最后查询: db.usuario.findOne({ where: { id: insert.id }, include: [ { model: db.rol } ] }); 如果我们尝试这个,它崩溃与错误:rol不与usuario关联! 好奇的是,通过使用user.getRoles()可以获取angular色的sequelize用户对象的实例, 你有什么想法,为什么会发生这种情况?

续订交易冲突

我想知道一种方式来创build一个事务,而不是在其他模型之间共享,下面的代码抛出一个exception Unhandled rejection SequelizeDatabaseError: SQLITE_ERROR: cannot start a transaction within a transaction at module.exports.Query.formatError (workspace/node_modules/sequelize/lib/dialects/sqlite/query.js:239:16) at Statement.<anonymous> (workspace/node_modules/sequelize/lib/dialects/sqlite/query.js:47:31) at Statement.replacement (workspace/node_modules/sqlite3/lib/trace.js:20:31) at Statement.replacement (workspace/node_modules/sqlite3/lib/trace.js:20:31) 名称为'I will exist'的模型不能在事务上,但是继续尝试将其插入到在另一个函数上创build的事务上。 return Promise.all([ sequelize.transaction(function (transaction) { return new Promise(function (r) { setTimeout(function () { r(); }, 1000); }).then(function () { User.create({ name : 'Im out of tx' }); }); […]

Sequelize.js一对多关系的外键

我正在使用Node.js / Express和MySQL与Sequelize.js ORM创build一个调查应用程序。 我无法正确设置2个模型之间的关系。 我想问题的答案表中的外键。 // define the Questions table var Questions = sequelize.define('Questions', { qId: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true}, question: Sequelize.STRING }, { timestamps: false }); // define the Answers table var Answers = sequelize.define('Answers', { aId: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true}, answer: Sequelize.STRING, answer_count: { type: Sequelize.INTEGER, […]