Tag: sequelize.js

用关联的数据创build一个复合索引?

我有一个用户表和一个userAttributes表。 每个用户只能有一个每个userAttribute的实例,所以我想创build一个列名和userId(这是由userAttributes.belongsTo创build的)复合唯一索引。这怎么能做到? UserAttribute = sequelize.define('userAttributes', { name: { type: Sequelize.STRING, allowNull: false, unique: 'nameIndex', validate: { isIn: [['phone', 'name','driverRequest']], } }, value: { type: Sequelize.STRING, allowNull: false }, }); User.hasMany(userAttributes, {unique: 'nameIndex'}); userAttributes.belongsTo(User, {unique: 'nameIndex'}); 我试着添加唯一的nameIndex没有成功,它似乎只适用于名称列。

UTC时间Sequelize.js

我在node.js中使用Sequelize来保存打开和closures时间。 我也使用了moment.js格式。 改变一个FindOrCreate我这样做: result.open = moment(hours.open, "hh:mma").format("YYYY-MM-DD HH:mm:ss"); result.save() … 这工作正常,时间格式化为MySQL的date时间格式。 问题是当我检索时间Seqquelize认为这是一个UTC时间,并将其转换为EST(我的服务器时区)。 我更喜欢它作为UTC进入数据库,并以相同的方式出现。 有什么我做错了吗? 为什么sequelize没有将其转换为UTC插入,但假设它是UTC出来? 也有,有没有办法转换到我的服务器时区?

如何在带有省略标志的Sequelize中插入空值?

如果我没有在模型的create方法中定义它们,我有一个Sequelize的实例,用标志omitNull插入在数据库中定义的de defaultValues。 喜欢这个: var sequelize = new Sequelize('db', 'user', 'pw', { omitNull: true }) 但是我想在其他模型中插入空值,如果我将它们定义为空。 喜欢: SomeModel.create({some_property: null}); 有没有一种方法来为模型的某些属性定义omitNull属性?

风帆js和Sequelize

我正在学习Node.js和Sails是我的select框架。 我想在MySql数据库的项目中使用它,我认为Sequelize Orm更完整。 我怎样才能使用Sequelize Orm in Sails而不是Waterline? 谢谢

通过Sequelize(Express / NodeJS)访问MySQL时出错

我正在尝试使用Sequelize。 我虽然想到了一些错误,但清除了其中的一些,但是我无法弄清楚。 项目结构: Project -Client -Server –models —index.js —Sid.js –router —routes —-signup.js —index.js app.js 我的configuration可变: "Lexstart": { "dbConfig": { "driver": "mysql", "user": "root", "database": "sid1", "password": "sid1", "host": "127.0.0.1", "port": "3306" } } 我的模特/ index.js: var fs = require("fs"); var path = require("path"); var Sequelize = require('sequelize'); var config = require('config'); // we use node-config […]

重复计数ORM中的多个计数查询

我想创build查询,它可以在sequelize.js一次在一个月的每一天的logging数不是像: Record.count({ where: { createdAt: { $like: '2015-04-14%' } } }).then(function(c) { console.log("2015-04-14 have been created" + c + "records"); }); Record.count({ where: { createdAt: { $like: '2015-04-15%' } } }).then(function(c) { console.log("2015-04-15 have been created" + c + "records"); }); Record.count({ where: { createdAt: { $like: '2015-04-16%' } } }).then(function(c) { console.log("2015-04-16 have been […]

有没有办法改变自动创build的默认“ID”列?

当Sequelize将一个实例保存到数据库(例如MySQL)时,它会自动在末尾添加一个“id”字段(也是自动递增的)。 我已阅读文章和文档,但我找不到任何方法来禁用它。 谢谢。

一种防止Sequelize中的高度嵌套代码进行error handling的方法?

我有一个表单,当提交后有些东西不正确时,我希望能够给用户特定的错误信息。 我使用Sequelize作为我的ORM,并且返回的promise对于所有的嵌套代码都变得有点麻烦。 例如,如果我们有两个模型要更新: User和Photo : models.User.find({where: {name: 'bob' }}).then(function(user) { if(user) { user.updateAttributes({email: email}).then(function(user) { models.Photo.find({where: { hash: hash}}).then(function(photo) { if(photo) res.json({"message":"updated"}); else res.status(404).json({"error": "Could not find Photo"}); }).catch(err) { res.status(500).json({"error": err}); }); }).catch(function(err) { res.status(500).json({"error": err}); }); } else { res.status(404).json({"error": "Could not find user"}); } }).catch(function(err) { res.status(500).json({"error": err}); }); 如果我在表单中有10个字段需要更新,那么所有的嵌套代码都可能成为霸道。 如果我想要具体的错误描述,而且还有更多的可读代码,可以给出什么build议? 是否有可能在一个代码块中捕获所有的404和500错误,而不是像我一样分解它们?

带有Sequelizejs的Nodejs使用每个模型的单独文件

这是一个尴尬的初学者问题,但我只想解决我对Sequelizejs的担忧。 我想把每个模型分成自己的文件,以保持我的源代码。 为了做到这一点,我需要在每个文件的开始处require("sequelize')和var sequelize = new Sequelize('DB-Name', 'DB-User', 'DB-Password'); 。 我的问题是,将创build一个新的连接到每个模型的数据库,还是只是不断重复使用相同的连接? 我是否应该放弃“每个文件一个模型”的概念,并创build一个主要的Models.js文件? 我对Node非常陌生,现在仍然习惯于它的约定。 谢谢您的帮助!

findOrCreate()和upsert()之间的区别

我正在阅读文档 ,它提到了两种做upsert的方法: findOrCreate()或upsert() 。 我阅读了描述,但是我还不清楚它们有什么不同。 upsert()继续说: Note that the unique index must be defined in your sequelize model and not just in the table. Otherwise you may experience a unique constraint violation, because sequelize fails to identify the row that should be updated. 这是否意味着upsert()明确要求我在模型中定义一个id UNIQUE主字段? 即: var Something = sequelize.define("Something", { id: { type: DataTypes.INTEGER, […]