Tag: sequelize.js

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做到这一点? 谢谢你的帮助!

用“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"}); […]