Articles of sequelize.js

SequelizeJS:如何在不使用原始查询的情况下在多个数据库中包含关联(join)

假设DB“A”中有“Account”表,DB“B”中有“ConversationHistory”表。 我的伪初始化脚本是: // Connection Script var db1 = new Sequelize("A", user, password) var db2 = new Sequelize("B", user, password) // Association Account.hasMany(ConversationHistory, {foreignKey: "sender_id", as: "conversations", constraints: false}) ConversationHistory.belongsTo(Account, {foreignKey: "sender_id", as: "sender", constraints: false}); // But when I use include in findMethod like ConversationHistory.findAll({ where: { … }, include: [{ model: Account, where: { […]

Sequelize Single Instance – 在Module.exports之后无效

我有这个Sequelize代码连接到我的数据库 var sequelize = new Sequelize('db-name', 'user', 'pwd', { host: 'XXX.XX.XX.XXX', dialect: 'mysql', pool: { max: 50, min: 0, idle: 1000000 }, }); 我把它包装在下面的模块中 var express = require('express'); var app = module.exports = express(); var Sequelize = require('sequelize'); module.exports = function (Sequelize, DataTypes) { return new Sequelize('db-name', 'user', 'pwd', { host: 'XXX.XX.XX.XXX', dialect: 'mysql', pool: […]

将NodeJS Express连接到MS SQL Server

我是一个NodeJS新手,我正在构build一个与MSSQL(SQL Server 2008 R2)数据库交谈的应用程序。 为此,我尝试使用Sequelize ,一个声称这样做的ORM库。 虽然我已经成功地使它与MySQL一起工作,但是SQL Server连接不起作用。 我在两种情况下连接到本地数据库。 以下是我所尝试的(如文档中所示): [第1部分:build立连接] … Express Code … var Sequelize = require('sequelize'); var sequelize = new Sequelize('NewDB', '', '', { host: '(localdb)\v11.0', dialect: 'mssql', pool: { max: 5, min: 0, idle: 10000 } }); [第2部分:testing] var User = sequelize.define('user', { firstName: { type: Sequelize.STRING, field: 'first_name' // Will […]

如何在加载时使用sequelize进行外连接

我可以find一个答案,但请指出我可能忽略的任何东西:我想知道如何在node.js中加载续集时如何进行外(全)连接? 现在工作如下: Messages.findAll({ include: [{model: User, required: true}]}) 如果我没有错,这给了我一个内部连接。 消息和使用有一对多的关系,我试图将用户名(存储在用户)传递给客户端,这期望结果数组的属性是“用户名”。 但是在这里,我只是获得一个用户对象的用户名属性附加。 有任何想法吗?

更新model.update上的错误

未处理的拒绝types错误:未定义不是函数 错误,当我试图更新我的表在MySQL上面的续集。 这里是触发错误的代码片段,评论一个令人惊讶的工作: topic.update( { name: "adfa"}, { where: { tid: 1} } ); //topicAttribute.update({ value: "name 2"},{where: {TOPIC: 2,name: "nadpis" }}); 现在这是我的两个模型: var topic = sequelize.define('topic', { tid: { type: Sequelize.INTEGER, field: 'tid', primaryKey: true }, name: { type: Sequelize.STRING, field: 'name' }, added: { type: Sequelize.DATE, field: 'added' }, addedBy: { type: Sequelize.STRING, […]

Sequelize – 使用关联表进行search,但排除关联表的结果

是否可以使用关联表进行search,但不包括关联表中的数据? 例如 db.Bill.findAll({ include: [{ model: self.db.Group, where: { id: groupId }, include: [{ model: self.db.Account, where: {username: username} }] }] }); 目前,我得到这些结果… [ { "id": 2, "title": "Title", "category": "OTHERS", "currency": "php", "recurring": false, "date_from": null, "date_to": null, "createdAt": "2015-08-12T10:54:08.000Z", "updatedAt": "2015-08-12T10:54:08.000Z", "group_id": 2, "Group": { "id": 2, "name": "Group", "createdAt": "2015-08-12T10:54:07.000Z", "updatedAt": "2015-08-12T10:54:07.000Z", […]

sequelizejs upsert throw SequelizeDatabaseError:语法错误在或接近“,”

我正在使用postgres sequelizejs upsert,请在下面find我的代码。 var upsertTranscript = function(tenant_url, dbHash, cb) { orm.getTenantDB(tenant_url, function(err, db) { if(err) { logger.warn("Error while getting the tenant db for URL : ", tenant_url); cb(err, null); } else { console.log("transcript_schema_path: ", transcript_schema_path) logger.debug("Created DB object for tenant : ", tenant_url) var transcript = orm.import(db, transcript_schema_path); var hash = { asset_id: dbHash.assetId, tenant_url: […]

在现有的表中添加新的列

我有一个数据库中的表,现在我想添加两个新的列。 我使用MYSQL cmd line更改了表格,并将新添加的列添加到Sequelize模型中。 但是,当我触发插入查询,它仍然触发与以前的字段的查询,并没有把新添加的列添加到它。 这里是我的数据模型: var Observation = sequelize.define('observation_details', { obv_id: { type: Sequelize.INTEGER, primaryKey: true }, obv_source: Sequelize.STRING, obv_waveband: Sequelize.INTEGER, prpsl_id: Sequelize.INTEGER, obv_ra: Sequelize.DOUBLE, //newly added column obv_dec: Sequelize.DOUBLE // newly added column }, { tableName: 'observation_details', timestamps: false }); 这里在表obv_ra和obv_dec已经添加..! 这是插入查询: Observation.create({ obv_source: req.body.obvDetails[i].source, obv_waveband: req.body.obvDetails[i].waveband, prpsl_id: proposalId, obv_ra: req.body.obvDetails[i].ra, obv_dec: req.body.obvDetails[i].dec […]

无法使用摩卡开始testing

以下是我运行摩卡testing时遇到的错误… upquire@0.0.0 test D:\tecsol\mtv mocha test/bootstrap.test.js test/unit/**/*.test.js 1) "before all" hook 0 passing (3m) 1 failing 1) "before all" hook: Error: timeout of 50000ms exceeded. Ensure the done() callback is being called in this test. at null.<anonymous> (D:\tecsol\mtv\node_modules\mocha\lib\runnable.js:189:19) 以下是我的bootstrap.test.js文件: var Sails = require('sails'); var sails; before(function(done) { this.timeout(5000); Sails.lift({ // configuration for testing purposes }, […]

Sequelize:删除JSONB属性(使用PostgreSQL)

我使用sequelize (v3.12.2), pg (4.4.3), PostgreSQL (v9.4)和Node (v4.1.2)。 我有一个包含JSONB数据types字段的模型。 var User = { data: { type: Sequelize.JSONB } 现在我可以做 User.findOne({where: {id: 12345}}) .update({data: {x: 'foo'}}); 和 User.findOne({where: {id: 12345}}) .update({'data.y': 'bar'}); 现在,如果我想删除data.x属性,我怎样才能在一个命令? User.findOne({where: {id: 12345}}) .update({'data.x': null}); 显然不行。 实际上,由此产生的数据对象应该是: {y: 'bar'} 并不是: {x: null, y: 'bar'} 我怎么能用Sequelize做到这一点? 谢谢你的帮助!