Articles of sequelize.js

三维连接表与续集

我正在尝试使用Sequelize模型来实现sr27数据库。 sr27数据库有一个连接表,连接食物与营养素和数据源。 sr27数据具有多个具有相同的食物ID和营养素ID但具有不同的数据源ID的条目,使得每一行都是唯一的。 基本上可以重复的值,但是每行合并的三列很独特。 我试图通过在三种types的每一种上使用两个belongsToMany关联来重新创build此关联(两个关联将其他两种types中的每一个关联到给定types)。 我使用“直通”键为所有这三个指定了相同的连接表。 我的连接表最终只有两列,忽略了添加食物ID列。 我正在尝试做什么? 我错过了什么?

Sequelize返回与原始查询不同的值

当我运行这个function function getOpenTxCalls(date) { return sequelize.query( 'SELECT \ CT.center_name, \ COUNT(CASE WHEN CL.disposition_type IN(3, 4, 22, 23,25, 42) AND CL."createdAt"::date = :date THEN CL.disposition_type END) AS "CallsMadeToday", \ COUNT(CASE WHEN CL.disposition_type = 3 AND CL."createdAt"::date = :date THEN CL.disposition_type END) AS "AppointmentsMadeToday" \ FROM "Centers" AS CT \ LEFT JOIN "Users" AS US ON US."centerId" […]

Sequelize – Where子句通过多个连接表

我在节点中使用sequelize orm来映射对象到MySQL数据库。 基本上我有两个表产品和类别 。 一个产品属于一个类别,但一个类别可以有多个产品。 在类别表中,我有一个“ parent_id ”列,它引用了它自己的id。 最多可以有三个层次的层次结构。 主要目标是find任何属于父类别的产品,例如26。我可以推导出如下SQL查询。 select * from product as p join category as c on p.category_id = c.id join category as c1 on c1.id = c.parent_id join category as c2 on c2.id = c1.parent_id where c.id = 26 or c1.id = 26 or c2.id = 26 在sequelize中,我尝试通过包含如下参考急于加载 { // […]

使用hasOne关联将大容量插入。

我正在使用sequelize将数据批量插入两个彼此具有一对一关联的表中。 但是我有一个bulkInsert的问题,因为批量插入不返回任何东西。 如文件所述: User.bulkCreate([ { username: 'barfooz', isAdmin: true }, { username: 'foo', isAdmin: true }, { username: 'bar', isAdmin: false } ]).then(function() { // Notice: There are no arguments here, as of right now you'll have to… return User.findAll(); }).then(function(users) { console.log(users) // … in order to get the array of user objects }) […]

如何使用Sequelize获取最后插入的ID和原始查询?

在sequelize.js中尝试以下原始MySQL插入时: mysql_sequelize.query( 'INSERT IGNORE INTO steamer(steamer_id, prov_id, name, avatar) VALUES(UNHEX(REPLACE(UUID(),\'-\',\'\')), \'' + prov_id + '\', \'' + steamer_name + '\', \'' + steamer_avatar + '\')') .then(function (data) { console.log('inserted STEAMER data—> ',data); // no useful info }); ); 生成的控制台日志如下所示: inserted STEAMER data—> [ OkPacket { fieldCount: 0, affectedRows: 1, insertId: 0, serverStatus: 2, warningCount: 1, […]

在belongsToMany关联的“through”表上查找 – 查找或创build

首先,我对Node.JS比较陌生,甚至比Sequelize更新,这一直困扰着我。 我有以下模型实体: Match.js module.exports = function(sequelize, DataTypes) { var Match = sequelize.define('Match', { matchId: { type: DataTypes.BIGINT, field: 'match_id' }, server: { type: DataTypes.STRING }, (…) rankedBoo: { type: DataTypes.BOOLEAN, field: 'ranked_boo' } }, { classMethods: { associate: function(models) { Match.belongsToMany(models.Summoner, {as: 'Participants', through: 'SummonerMatch'}); } }, freezeTableName: true, underscored: true }); return Match; }; […]

Sequelize – 在属于To Many关联的模型中使用set,添加,创build方法

我是新的工作与sequ​​elize,我还不知道,如何实现关联模型与BelongsToMany关联时创build的方法。 例如: 我有两个模型用户和属性,一个用户可以有多个属性,因为我有创build中间模型PropertiesByUser当我有userId,propertyId,状态和其他字段的每个原因。 我创build的用户和属性分开,但是当我想添加一个属性到用户是当我的过程是复杂的,因为我不知道如何创build或使用模型PropertiesByUser创build,添加,设置,属性为用户,或添加用户的属性,有人可以帮助我吗? 我已经阅读过博客,有些方法可以使用,但任何解决scheme的作品。 🙁

用SQL或应用程序语言定义数据库模式会更好吗?

我有2个服务正在运行。 一个是Node.js应用程序,另一个是PSQL数据库。 我不知道我应该在哪里定义我的数据库模式。 一些像Sequelize这样的库用应用程序语言来定义它(在这种情况下是javascript)。 var User = sequelize.define('user', { firstName: { type: Sequelize.STRING, field: 'first_name' // Will result in an attribute that is firstName when user facing but first_name in the database }, lastName: { type: Sequelize.STRING } }); 但是我认为在纯SQL中定义它们会更好 CREATE TABLE users ( id SERIAL, first_name varchar(85), PRIMARY KEY (id) ); 这样,其他其他平台上的其他应用程序就可以使用数据库,而不会与模式混淆。 在我看来,数据库定义应该独立于应用程序的语言。 有什么我不考虑? […]

Sequelize中的模型和迁移定义之间的主要区别是什么?

SQL数据库的一些Sequelize用户在早期经常使用sync({ force: true }) ,然后切换到迁移。 我很困惑,因为迁移和模型似乎有类似的语法,但也有一些似乎并没有被强调的差异。 一些观察(可能是错误的): 两者中的选项对象是不同的:模型中的options.indexes对象在迁移中不起作用(但在模型中起作用) 使用unique: 'somename'自定义索引名称在迁移字段属性中不起作用(但适用于模型); 但一个unique: true在两个unique: true作品 外键需要显式创build – 并且需要在迁移中设置references (但在模型中,hasMany / belongsTo会自动生成外键字段和外键引用) id , updatedAt和updatedAt必须在迁移中手动创build,而不是模型 最后两个是合理的,因为它是划分迁移责任(build立数据库模式)与模型 – 但是迁移支持/如何工作似乎不同的类似的项目, sync选项加​​剧了我的困惑。 一些问题: 在Sequelize中迁移和模型之间要记住的主要区别是什么(而不是两者之间的一般哲学)? 模型中的哪些选项(使用sync选项时)在迁移中起作用? 当从sync切换到离散迁移时,其他人是否简单地将模型文件复制到迁移? 你是否删除了只适用于模型的无关信息的一部分? 只适用于迁移?

sequelize – 更新行而不更改updated_at字段

我在节点开发中使用sequelize.js库作为ORM。 使用sequelize更新行时, “updated_at”字段已更改为当前时间戳。 我想知道如何防止这种情况? 在不更改“updated_at”字段的情况下,我想使用sequizeize API更新其他字段,而不是运行原始查询。