Articles of sequelize.js

Sequalizejs将偏执configuration添加到现有的表

我创build了一个没有偏执狂选项的表,现在我想改变这个表的定义来使用偏执狂。 我不想重新创build数据库,因为它已经在生产。 我怎么能使用迁移? 我应该使用addColumn与deletedAt,只是将偏执狂定义添加到模型,还是有更好的办法?

Sequelizejs中.save和.create有什么区别?

我是新来的Sequelize,努力去理解这个非常陌生的ORM新世界是如何工作的。 曾经我似乎无法理解的东西是Sequelizejs中“.create”和“.save”之间的区别。 我用两种语言编写了testing函数,除了语法略有不同外,他们似乎也完全一样。 这是使用“.save”方法 models.User.build({ username: req.body.username, password: req.body.password, first_name: req.body.firstName, last_name: req.body.lastName }) .save() .then(function(task){ // some function… }) .catch(function(error){ // some function… }); 这是使用“.create”方法 models.User.create({ username: req.body.username, password: req.body.password, first_name: req.body.firstName, last_name: req.body.lastName }).then(function(data) { // some function… }); 我在这里没有看到什么?

在express.js中使用sequelize更改数据库连接,具体取决于路由

是否有可能改变数据库连接在sequelize取决于路线? 例如,用户可以访问2个不同的安装在一个网站: – example.com/foo – example.com/bar login后,用户被redirect到example.com/foo为了获得foo站点的所有任务,他们需要访问example.com/foo/tasks bar网站使用一个单独的数据库,因此,如果他们想获得他们所有的任务bar他们必须去example.com/bar/tasks 每个安装都有自己的数据库,所有的数据库都有相同的模式。 是否可以根据访问哪个路由来更改数据库连接? *login只发生一次

如何在没有额外查询的情况下去除续集中的关联?

我有许多到exercise和muscle模型之间的联系。 我删除单个关联 models.Exercise.find({where: {id: exerciseId}}) .then(function(exercise){ exercise.removeMuscle(muscleId); res.sendStatus(200); }); ORM运行3个查询,其中2个类似 Executing (default): SELECT `Muscule`.`id`, `Muscule`.`title`, `Muscule`.`description`, `Muscule`.`video`, `Muscule`.`createdAt`, `Muscule`.`updatedAt`, `muscle_exercise`.`createdAt` AS `muscle_exercise.createdAt`, `muscle_exercise`.`updatedAt` AS `muscle_ exercise.updatedAt`, `muscle_exercise`.`MusculeId` AS `muscle_exercise.MusculeId`, `muscle_exercise`.`ExerciseId` AS `muscle_exercise.ExerciseId` FROM `Muscules` AS `Muscule` INNER JOIN `muscle_exercise` AS `muscle_exercise` ON `Muscule`.`id` = `muscle_exercise`.`MusculeId` AND `muscle_exercise`.`ExerciseId` = 11; Executing (default): SELECT `Muscule`.`id`, `Muscule`.`title`, `Muscule`.`description`, […]

在父表和子表上添加“where”

我需要在两个表(父母和孩子),通过sequelize(与MySQL)进行查询。 问题是当我在父表上使用where子句时,它放弃了子表上的结果。 在SQL Words中,我需要类似的东西 SELECT * FROM PARENT INNER JOIN CHILD ON PARENT.ID = CHILD.PARENTID WHERE PARENT.FIELD LIKE 'A' OR CHILD.FIELD LIKE 'A' 相反,sequelize总是返回类似的东西 SELECT * FROM PARENT INNER JOIN CHILD ON PARENT.ID = CHILD.PARENTID AND (CHILD.deletedAt IS NULL AND (CHILD.FIELD LIKE 'A')) WHERE (PARENT.deletedAt IS NULL AND (PARENT.FIELD LIKE 'A')) 我检查了数据,子查询带来了结果,但是由于父查询中的where语句,它丢弃了子结果 UPDATE 我的代码是这样的: var […]

捍卫一个非幂等后期操作,以防止在Node.js中快速调用?

简单的问题:假设一个非幂等后期操作,你如何捍卫你的发布请求处理程序在多次调用node.js之前,他们可以响应,从而导致数据损坏? 具体案例:我有一个匹配的API,大约需要2-3秒才能返回(由于不得不通过一个大的用户库)。 有一些操作,用户可以简单地在同一秒内调用这个操作(这是一个错误,但不在我的控制之下,因此回答这个部分并不构成对根问题的回答)。 在这些条件下,为用户select了多个匹配,这是不可取的。 所有这些快速请求都会有相同的最终结果。 具体约束: node.js / express / sequelize。 如果我们添加一个队列,每个用户的请求将会在所有其他用户的请求之上,这可能在交通繁忙时产生严重的影响。

Sequelize v4 | 实例方法不起作用

我一直在尝试更新我的代码,以适应Sequelize的最新升级。 我在用着 续集:4.2.0 节点:7.10.0 NPM:5.0.3 问题 我似乎无法正确设置用户模型。 我已经实现了一些似乎没有工作的实例方法。 该类不能正确实例化。 user.js的 module.exports = (sequelize, DataTypes) => { var User = sequelize.define('user', { attributes …. }, { hooks: { afterCreate(user, options) { user.testFunction(); } } }); // Instance methods User.prototype.testFunction = () => { this.firstName = "John"; } // Class methods User.anotherTestFunction = () => { User.findOne().then(() […]

Sequelize 4.3.2 n:m(多对多)关联:未处理的拒绝SequelizeEagerLoadingError

我有3个模型:用户,项目,UserProject: module.exports = function (sequelize, DataTypes) { var User = sequelize.define('User', { title: DataTypes.STRING, description: DataTypes.STRING }, { classMethods: { associate: function (models) { User.belongsToMany(models.Project, { through: 'UserProject', foreignKey: 'userId' }) } }, freezeTableName: true }) return User } module.exports = function (sequelize, DataTypes) { var Project = sequelize.define('Project', { title: DataTypes.STRING, description: DataTypes.STRING }, […]

如何扩展Sequelize模型

有没有一种方法来扩展(也许inheritance)模型来定义模型后添加钩子和字段? 所以像这样的东西: User = sequelize.define("user", { name: sequelize.String }); makeStateful(User); // adds state,updated,added fields and some hooks

使用sequelize和nodejs更新多个logging?

使用node.js(v0.10.12)和sequelize(2.0.0-dev9),我想更新现有的数据库表中的属性。 从另一个SO讨论中,我能够一次只更新一个logging。 我把这个调用封装在for循环中,但是在for循环中更新了相同的logging。 有人可以帮我修改这个代码来更新所有符合search要求的logging吗? 以下是我的代码: global.db.Task.find({ where: {"Cd": "match"} && {"Desc": null} }).on('success', function(task) { if (task) { // if the record exists in the db task.updateAttributes({ Desc: "New Upate" }).success(function() {}); } })