Articles of sequelize.js

node.js + sequelize +顺序执行

在我的节点应用程序中,我必须执行2个查询1之后(即)我必须执行基于第一个查询结果的第二个查询。 我的代码: var levels; try { sequelize.query("Select * from levels where country_id = " + level0 + "").success(function(results) { levels = results; }).failure(function(err) { if (err) { logger.error(err.stack); throw (err); } else { if (callback) { callback(err, null); } } }); } catch (err) { } if (level == 2) { query = "select *from […]

Sequelize JS / Bluebird:从asynchronous并行数据库调用开始

我有个问题。 我想开始2分贝的电话,然后继续承诺链。 我做的一个相当怪异的做法是像这样开始承诺: db.Model.find().then(function() { return [ firstcall, secondcall ] }).spread(function(resultFromFirstCall, resultFromSecondCall) { //do something once both calls completed }); 用空数据库调用启动promise链可以吗? 或者,还有更好的方法。 我知道我可以引入asynchronous库,但是我认为这是一个更清洁的方法,如果没有性能影响,使空的db.Model.find()调用。

等待循环完成callback

来自PHP的背景,我试图让我的头在这个callback的东西。 基本上我想获得一些行,然后我想循环这些行,并检查他们对其他模型(不同的数据库)。 我希望回拨等待,直到他们都被循环和检查。 在sequelize遍历所有结果之前调用callback函数。 基本上我想要的function是“阻止”。 我需要改变什么? toexport.getlasttransactions = function(lower,upper,callback){ var deferred = Q.defer(); var transactionsToUpdate = []; /////////////////////////// // set import conditions // /////////////////////////// var lowerbound = (lower) ? lower.format() : moment.utc().subtract(10, 'minutes').format(); var upperbound = (upper) ? upper.format() : moment.utc().format(); /////////////////////////////// // get IDs From Failed syncs // /////////////////////////////// FailedSync.find({ limit: 100 }) .then(function(res){ […]

Sequelize.js多次急切的加载

我有2个模型: User和Team 有多种types的用户(在这种情况下是指导者和版主),它们使用User模型()中的属性进行区分。 User和Team之间的关联如下: User.hasMany(models.Team, {as: 'Mentors', through: models.TeamMentor, foreignKey: 'mentorId'}); User.hasMany(models.Team, {as: 'Moderators', through: models.TeamModerator, foreignKey: 'moderatorId'}); Team.hasMany(models.User, {through: models.TeamMentor, foreignKey: 'teamId'}); Team.hasMany(models.User, {through: models.TeamModerator, foreignKey: 'teamId'}); 现在,我正在尝试为所有分配给团队的导师和版主分配团队的细节以及单独的对象。 我从文档中了解了许多到许多关系的getter和setter,但是我不知道如何使用这个方法,因为这里有两种不同的关联: 团队 – 导师(用户) 团队 – 主持人(用户) 在这种情况下如何正确查询团队的详细信息? PS: TeamMentor和TeamModerator是空模型来帮助多人连接

id:在sequelize中创build新项目时为null

当我尝试创build一个新的对话项时,Sequelize会返回一个id: null的对象,即使在数据库中有一个有效的ID。 我怎样才能得到Sequelize返回最后插入的ID到新创build的项目? Conversation.create({ type: 'private', createdBy: 1, }).then(conversation => { reply(conversation); }); 将返回 { "type": "conversations", "id": null, "createdBy": 1, "created_at": "2016-03-18T01:47:48.000Z" } 我的代码: const Conversation = model.define('Conversation', { id: { type: Sequelize.INTEGER, primaryKey: true, }, type: { type: Sequelize.ENUM, values: ['private', 'group'], validate: { isIn: ['private', 'group'], }, }, createdBy: { type: Sequelize.INTEGER, […]

续集和嵌套结果?

Sequelize允许数据关系,但我似乎无法看到是否有办法让它返回由关系组成的查询结果? 我可以做这两个查询,但我很好奇Sequelize是否提供这个? 例如播放列表和播放列表条目: Playlist: sequelize.define('playlist', { name: Sequelize.STRING, description: Sequelize.STRING }), PlaylistEntry: sequelize.define('playlist_entry', { playlist: Sequelize.INTEGER //track: Sequelize.INTEGER }) PlaylistEntry.belongsTo( Playlist, { as: 'Playlist', foreignKey: { name: 'fk_playlist' }}); 我会希望的(伪代码): 查询: Playlist.find(where: {id: playlistId}, nestedResult: true); 结果: [{ id: 123, name: 'abc' playlistEntries: [{ id: 321, track: 431 }] }]

NodeJS护照Facebook OAuth

我一直在学习NodeJS的课程和教程,并决定在一个应用程序中使用它们。 对于这个项目,我需要用户注册并login才能将其活动存储在数据库中。 我使用Passport来做这个过程,这个项目的这个部分的代码是这样的: /****** Passport functions ******/ passport.serializeUser(function (user, done) { done(null, user.id); }); passport.deserializeUser(function (id, done) { db.user.findOne( { where : { idUser : id } }).then(function (err, user) { done(err, user); }); }); //Facebook passport.use(new FacebookStrategy({ //Information stored on config/auth.js clientID: configAuth.facebookAuth.clientID, clientSecret: configAuth.facebookAuth.clientSecret, callbackURL: configAuth.facebookAuth.callbackURL, profileFields: ['id', 'emails', 'displayName', 'name', 'gender'] }, […]

调用存储过程中的sequalize参数传入

我试图调用一个存储过程传递参数如下所示。 但是,我知道我的语法是closures的,我没有看到任何例子,无论是在文档或unit testing。 model.sequelize.query('CALL truncate_tables(\'appuser\');') .then(function (response) { done(); }).error(function (err) { done(err); }); build议? 我开始看这个链接。 在Sequelize.js中调用存储过程 附加信息: 这是我看到的错误 Unhandled rejection SequelizeDatabaseError: syntax error at or near "CALL" 这里是sp CREATE OR REPLACE FUNCTION truncate_tables(username character varying) RETURNS void AS $BODY$ DECLARE statements CURSOR FOR SELECT tablename FROM pg_tables WHERE tableowner = username AND schemaname = […]

sequelize DataTypes TypeError:无法读取未定义的属性“INTEGER”

定义模型时,我有一个续集DataTypes.INTEGER问题。 我在电子书中标题为“使用Node.js构buildAPI”的示例。 我是一个试图抓住快递和续集的新手。 任何帮助非常感谢。 谢谢。 错误详情: > /home/xxx/workspace/ntask-api/models/tasks.js:9 > type: DataTypes.INTEGER, > ^ TypeError: Cannot read property 'INTEGER' of undefined > at Function.module.exports (/home/xxx/workspace/ntask-api/models/tasks.js:9:21) > at Consign.into (/home/xxx/workspace/ntask-api/node_modules/consign/lib/consign.js:239:17) > at Object.<anonymous> (/home/xxx/workspace/ntask-api/index.js:13:5) > at Module._compile (module.js:456:26) > at Object.Module._extensions..js (module.js:474:10) > at Module.load (module.js:356:32) > at Function.Module._load (module.js:312:12) > at Function.Module.runMain (module.js:497:10) > at startup […]

Node.js,sequelize和Unknown列

我读了类似的问题: 在“字段列表”中将未知列“* .createdAt” 但解决scheme不适合我! 为什么? 这是我的代码: var User = sequelize.define("User", { id: { type: DataTypes.UUID, primaryKey: true }, cognome: DataTypes.STRING, nome: DataTypes.STRING, email: DataTypes.STRING, password: DataTypes.TEXT, stato: DataTypes.INTEGER, ruolo: DataTypes.INTEGER }, { freezeTableName: true }, { timestamps: false }); 错误是: Executing (default): SELECT `id`, `cognome`, `nome`, `email`, `data_nascita`, `password`, `cellulare`, `stato`, `blacklist`, `createdAt`, `updatedAt` FROM […]