Tag: sequelize.js

Sequalize:在加载关联时,一起使用order和limit

我有一个与主表中的主键对应的多个列的事务表。 基本上简单的一对一的关系。 我正在使用限制页面通过可能是一个万亿交易。 当使用顺序并加载findAll函数中的所有关系时,生成的查询将为LIMIT使用的FROM子句生成一个子查询。 另一方面,ORDER应用于外部查询。 这不提供所需的结果,因为订单不适用于整个数据集,而是应用于子查询返回的集合。 有没有办法,我可以申请的子查询顺序。 我正在使用Sequelize 1.7.9 db.Transaction.findAll({ order: '`transactions`.`some_date` DESC', limit: 10, offset: 10, include: [{ model: db.Master1, attributes:['name'], include: [{ model: db.Master2, attributes:['name'] }] }, { model: db.Master3, include: [{ model: db.Master4, attributes: ['name'] }] }, { model: db.Master5, attributes: ['name'], where: { id: '12345' } }] }) 生成表单的SQL SELECT `transactions`.*, […]

NodeJS Sequelize – 多个所有权

在我的应用程序中,我有用户和联系人。 用户向其他用户发送ContactRequest。 ContactRequest有一个请求者和被请求者字段。 我不知道如何去做这件事。 我不想要一个用户,ContactRequests和ContactRequestsUsers表(如果我在用户和联系人请求上定义了hasMany或hasOne,那么这个表就会是一个sequelize)。 那么让我们先来定义一些模型 – var User = sequelize.define('User', { id: {type: seq.INTEGER, primaryKey: true, autoIncrement: true}, username: { type: sequelize.STRING(32) } }); var ContactRequest = sequelize.define('ContactRequest', { id: {type: seq.INTEGER, primaryKey: true, autoIncrement: true} }); 不知道我应该做什么协会。 似乎我应该可以通过多种方式来做到这一点(理论上),但是我无法得到我尝试工作的任何方式。 // User Has Many? User.hasMany(ContactRequest, {as: 'Requester', foreignKey: 'requester'}); User.hasMany(ContactRequest, {as: 'Requestee', foreignKey: 'requestee'}); // […]

sequelize-nodejs如何从表的其他字段获取数据

您好我正在开发一个聊天应用程序,只是想知道如何从mysqldatabase表中的其他字段使用sequelize获取数据,因为我是全新的。 下面是我试图做到这一点: io.on('connection', function(socket){ // Send all previously sent messages for( i in messages ) { socket.emit('chat message', messages[i]); } socket.on('chat message', function(msg){ console.log('message: ' + msg); // Push the message into the in-memory array. messages.push(msg); // Storage the message for when the application is restarted. sequelize.query('INSERT INTO chat_storage(chat) VALUES("'+msg+'")').success(function() { // Insert was successful. […]

获取刚刚保存的对象的ID在Sequelize中?

所以我有这个代码: //defining partner var Partner = sequelize.define('Partner', { order: Sequelize.INTEGER, image: Sequelize.STRING, }, { tableName: 'partners', }); //creating partner instance var partner=Partner.build(); partner.save().success(function(newpartner){ console.log(newpartner.id); }); 当这个代码被执行时,2个伙伴实例被插入到数据库中。 当我访问partner id属性时,第二个被推。 这是来自控制台的日志: Executing (default): INSERT INTO `partners` (`updatedAt`,`createdAt`) VALUES ('2014-08-16 13:13:26','2014-08-16 13:13:26'); Executing (default): INSERT INTO `partners` (`id`,`createdAt`,`updatedAt`) VALUES (DEFAULT,'2014-08-16 13:13:26','2014-08-16 13:13:26'); 我需要得到合作伙伴的ID,并将其保存到数据库后发送给客户端。 我如何正确地做到这一点? 现在我只需访问id属性而不用调用save() ,因为它保存对象。 但是这没有logging。 有没有适当的方法来做到这一点?

使用承诺在钩子钩子

在Sequelize文档中我已经读过,你可以使用callback函数或者在你的钩子中返回promise 。 但是,以下代码无法为我工作 – 对于Sequelize的最新1.x和2.x版本。 我设置了用户模型: var User = function(sequelize, DataTypes) { var User = sequelize.define('User', { firstName: DataTypes.STRING, lastName: DataTypes.STRING, email: DataTypes.STRING, password: DataTypes.STRING }, { hooks: { beforeUpdate: _hashPassword, beforeCreate: _hashPassword } }); return User; }; 这是我的函数,哈希用户的密码,使用承诺(不起作用): function _hashPassword(user) { if (!user.getDataValue('password')) { return Promise.reject(); } return bcryptGenSalt(10) .then(function(salt) { return bcryptHash(user.getDataValue('password'), salt); […]

用postgres默认为mysql

我正在设置Sequelize来pipe理Node.js应用程序中的postgres。 我需要sequelize-postgres,以及在实例化新的Sequelize对象时在方言attr中声明“postgres”。 但由于某种原因,它默认使用mysql。 确切的错误信息: /Users/…project/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:306 var connection = mysql.createConnection(connectionConfig); ^ TypeError: Cannot call method 'createConnection' of undefined at module.exports.connect (…/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:306:28) at Object.pool.Pooling.Pool.create (…/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:131:19) at createResource (…/node_modules/sequelize/node_modules/generic-pool/lib/generic-pool.js:258:13) at dispense (…/node_modules/sequelize/node_modules/generic-pool/lib/generic-pool.js:250:9) at Object.me.acquire (…/node_modules/sequelize/node_modules/generic-pool/lib/generic-pool.js:316:5) at null.fct (…/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:241:19) at null.<anonymous> (…/node_modules/sequelize/lib/emitters/custom-event-emitter.js:24:18) at processImmediate [as _immediateCallback] (timers.js:336:15) 任何帮助表示感谢,谢谢!

如何定义没有实际外键的续集关系?

我有这样一个现有的数据库: students: name : string school_id : integer schools: name : string students表上的school_id属性不是实际的外键。 这只是一个整数,代表学生与没有任何外键的学校之间的关系。 有了这样的devise,我怎样才能定义关系的sequelize,所以我可以得到一个学生的学校名称(student.school.name)?

Openshift节点应用程序无法启动

我没有在Openshift上启动我的基于节点的应用程序。 应用程序在本地启动,但是节点的自动部署(在推送到远程主服务器repo)时遇到了日志的循环问题; DEBUG: Running node-supervisor with DEBUG: program './app/server.js' DEBUG: –watch '/var/lib/openshift/53dab282e0b8cdd367000131/app-root/data/.nodewatch' DEBUG: –ignore 'undefined' DEBUG: –extensions 'node|js|coffee' DEBUG: –exec 'node' DEBUG: Starting child process with 'node ./app/server.js' DEBUG: Watching directory '/var/lib/openshift/53dab282e0b8cdd367000131/app-root/data/.nodewatch' for changes. module.js:340 throw err; ^ Error: Cannot find module 'underscore.string' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:364:17) at require (module.js:380:17) […]

Sequelize hasMany / belongsToMany和实例方法

我正在写一个CRUD来pipe理SequelizeJS(版本2.0.0-rc6)和ExpressJS系统中的用户。 一个用户可以在多个用户组中,一组用户可以有多个用户。 问题是,当我尝试添加用户到一组用户时,sequelize正在抛出以下错误: Possibly unhandled TypeError: Cannot call method 'replace' of undefined at Object.module.exports.removeTicks (/home/app/node_modules/sequelize/lib/utils.js:512:14) at Object.module.exports.addTicks (/home/app/node_modules/sequelize/lib/utils.js:508:29) at Object.module.exports.QueryGenerator.quoteIdentifier (/home/app/node_modules/sequelize/lib/dialects/postgres/query-generator.js:881:22) at generateJoinQueries (/home/app/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1100:72) at Object.<anonymous> (/home/app/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1165:29) at Array.forEach (native) at Object.module.exports.QueryGenerator.selectQuery (/home/app/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1164:25) at module.exports.QueryInterface.select (/home/app/node_modules/sequelize/lib/query-interface.js:679:35) at null.<anonymous> (/home/app/node_modules/sequelize/lib/model.js:728:34) 模型/用户group.js module.exports = function(sequelize, DataTypes) { var UserGroup = sequelize.define("UserGroup", { id: { type: DataTypes.INTEGER, autoIncrement: […]

NodeJS使用自定义引用字段对数据源进行绑定

我定义了以下模型: module.exports = function(sequelize, DataTypes) { // Brand var Brand = sequelize.define("Brand", { name: DataTypes.STRING },{tableName: "brand"}); // Product_Type var Product_Type = sequelize.define("Product_Type", { name: DataTypes.STRING },{tableName: "product_type"}); // Product var Product = sequelize.define("Product", { name: DataTypes.STRING, product_type_id: { type: DataTypes.INTEGER, references: Product_Type, referencesKey: "id" }, brand_id: { type: DataTypes.INTEGER, references: Brand, referencesKey: "id" }, […]