Articles of sequelize.js

获取最后插入的ID Sequelize

我正在使用Sequelize,并试图在原始查询中获取最后插入的ID。 我的查询是 .query(Sequelize.Utils.format(["insert into MyTable (field1, field2) values (?,?)", val1, val2]) 查询完成,但成功事件的结果是null 。 有人可以帮忙吗? 谢谢。 伙计们, 经过一番研究和无数的尝试后,我明白了被调查对象是如何工作的。 请纠正我,如果我的回答是错误的。 被调用对象需要这种结构 {__factory:{autoIncrementField: 'parameterName'}, parameterName: '' } 在这种情况下,“parameterName”是将存储新ID的字段,sequelize查找__factory.autoIncrementField,以将其最后一次插入的id的值(其值(__factory.autoIncrementField的值))设置为属性。 所以,我的电话查询方法将是 .query(sequelize.Utils.format(tempInsert), {__factory:{autoIncrementField: 'parameterName'}, parameterName: '' }, {raw: true}) 这将导致这样的对象 { __factory: { autoIncrementField: 'parameterName' }, parameterName: newInserted_ID } 感谢所有,我希望这可以帮助一个人。

停止执行Express.js中的Sequelize承诺

我是新来的承诺的世界,我不知道我完全理解如何在某些情况下使用它们。 Sequelize最近添加了支持承诺,这使得我的代码更具可读性。 一个典型的情况是避免在无限callback中多次处理错误。 下面的代码总是返回204而当我无法find照片时,我希望返回404 。 有没有办法告诉Sequelize发送404后“停止”承诺链的执行? 请注意, res.send是asynchronous的,所以它不会停止执行。 // Find the original photo Photo.find(req.params.id).then(function (photo) { if (photo) { // Delete the photo in the db return photo.destroy(); } else { res.send(404); // HOW TO STOP PROMISE CHAIN HERE? } }).then(function () { res.send(204); }).catch(function (error) { res.send(500, error); }); 当然这个例子是微不足道的,可以很容易地用callback函数来写。 但在大多数情况下,代码可以变得更长。

beforeUpdate似乎没有被调用

我有一个简单的用户模型,如下所示: 'use strict'; let hashPassword = (user, options) => { if (!user.changed('password')) { return; } return require('bcrypt') .hash(user.getDataValue('password'), 10) .then(hash => user.setDataValue('password', hash)); }; module.exports = (sequelize, DataTypes) => { const User = sequelize.define('User', { username: {allowNull: false, type: DataTypes.STRING, unique: true}, email: {allowNull: false, type: DataTypes.STRING, unique: true}, password: {allowNull: false, type: DataTypes.STRING, unique: […]

如何在SailsJs中使用Sequelize

水线是一个很好的ORM,但我注意到有许多function还没有出现在水线上,但Sequelize已经有了。 所以我决定改用sequelize,但仍然使用Sails来处理其他的事情。 我有search教程如何切换到sequelize,但没有。 我怎样才能取代水线为航行Js的续集?

关联迁移

我的应用程序当前使用Sequelize sync()方法来创build数据库,我想将其更改为使用迁移系统。 我的一个模型与其他模型有belongsTo()关联,我不知道如何为这些关联创build初始迁移代码。 我是否必须使用SQL查询手动创build外键,还是有一些方法可用?

没有选项可以在后续模型中映射列名称

我有一个给定的数据库,长的,繁琐的列名。 没有办法将表名映射到模型中的更简短和更具描述性的propertyNames? 就像是 var Employee = sql.define('Employee', { id : {type : Sequelize.INTEGER , primaryKey: true, map : "veryLongNameForJustTheId"} },{ tableName: 'cumbersomeTableName', timestamps: false });;

如何在MySql中使用sequelize运行多个原始查询?

我想通过sequelize.sync({ force: true });运行一个脚本来从数据库中删除所有的表sequelize.sync({ force: true }); 当我从控制台运行脚本时,脚本运行时没有问题,当我尝试从我的node.js应用程序运行时,问题就发生了; MySql返回一个分析错误。 的node.js var dropAllTables = [ 'SET FOREIGN_KEY_CHECKS = 0;', 'SET GROUP_CONCAT_MAX_LEN = 32768;', 'SET @tables = NULL;', "SELECT GROUP_CONCAT('`', table_name, '`') INTO @tables FROM information_schema.tables WHERE table_schema = (SELECT DATABASE());", "SET @tables = CONCAT('DROP TABLE IF EXISTS ', @tables);", "SELECT IFNULL(@tables, 'SELECT 1') INTO @tables;", 'PREPARE […]

如何在SEQUELIZE(nodeJS)中创build一个TRIGGER?

我试图创build一个触发器使用sequelize ..主要想法是创build一个用户后创build一个实例的CONFIG。 //USER MODEL module.exports = function(sequelize, DataTypes) { var User = sequelize.define('User', { name : DataTypes.STRING(255), email : DataTypes.STRING(255), username : DataTypes.STRING(45), password : DataTypes.STRING(100), }, { classMethods : { associate : function(models) { User.hasOne(models.Config) } } }); return User; }; //CONFIG MODEL module.exports = function(sequelize, DataTypes) { var Config = sequelize.define('Config', { notifications […]

无法获得Sequelizevalidation工作

我试图在我的Sequelize模型中实现validation。 该模型定义如下 var model = sequelize.define('Model', { from: { type: DataTypes.STRING, allowNull: false, validate: { isEmail: true } } } 然后我试图build立一个实例并validation它: var m = Model.build({ from: 'obviously not a email' }); var err = m.validate(); 但是,如果我做了console.log(err) ,我只能得到{ fct: [Function] } 。 定义引发exception的自定义validation器会导致未处理的exception。 我应该如何正确使用validate() ?

我如何安装sequelize.js二进制文件?

我正在引用sequelize.js文档: http ://sequelizejs.com/documentation#migrations-the-binary 运行'sequelize -V'后,我收到: $ sequelize -V sequelize: command not found 我在网上search,找不到任何关于如何安装二进制文件的参考