Articles of sequelize.js

续集如何保存而不更改updatedAt?

是否可以不更新sequelize model.save()?updatedAt值? 我正在递增一个对象的计数器,不要更新模型的根,因此我想要updatedAt值保持原样。 这无论如何可能与续集?

PostgreSQL的Sequelize模式:如何在模型中准确定义模式?

我search了整个networking,并没有能够确定如何添加一个模式到这个下面的续集模型。 下面的代码不会反弹错误,但是当我检查postgres数据库时,唯一的模式是公共的默认模式。 // The model definition is done in /path/to/models/project.js module.exports = function(sequelize, DataTypes) { return sequelize.define("project", { name: DataTypes.STRING, description: DataTypes.TEXT, }, define: { schema: "prefix" }, classMethods: { method1: function() {}, method2: function() {} }, instanceMethods: { method3: function() {} }) 应如何修改脚本以准确定义模式? 编辑 就我而言,最终的答案是 database_name.sequelize.createSchema('prefix').then(() => {…}); 在我的./models/index.js文件中,数据库对象如下所示: database_name = { Sequelize: Sequelize, […]

使用seqelize与hasMany关系postgresql来创build一个API

我在node.js之上使用了sequilize,并且为了创build一个可以使用本教程http://mherman.org/blog/2015/10/22/node-postgres-sequelize/#来访问的API 。 WSJ77BMrLBL 。 我不能让数据库填充一个名为商店与产品的对象。 我现在所拥有的是: 路线: // get all stores router.get('/stores', function(req, res) { models.Store.findAll({}).then(function(stores) { res.json(stores); }); }); // get single store router.get('/stores/:id', function(req, res) { models.Store.find({ where: { id: req.params.id } }).then(function(store) { res.json(store.productId); }); }); // add new store router.post('/stores', function(req, res) { models.Store.create({ name: req.body.name, productId: req.body.product_id }).then(function(store) { res.json(store); […]

如何添加,删除Sequelize CLI中的新列

我刚开始使用Sequelize和Sequelize CLI 由于这是一个开发时间,因此频繁地添加和删除列。 什么是最好的方法添加一个新的列到现有的模型? 例如,我想要一个新的专栏“ 完成 ”到Todo模型。 我将这个列添加到models / todo.js。 下一步是什么? 我试过sequelize db:migrate 不工作: “没有执行迁移,数据库模式已经是最新的。”

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。 如果我们添加一个队列,每个用户的请求将会在所有其他用户的请求之上,这可能在交通繁忙时产生严重的影响。