Tag: sequelize.js

如何删除postgresql中的元素json

在图片中, node_info列是json []的types,现在我想通过Nodejs删除数组中的一个元素ORM sequelize function demo(){ const removeQuery = { where: { name: _name }, raw: true } const updateNode = { node_info: db.sequelize.fn('array_remove', db.sequelize.col('node_info'), JSON.stringify({uuid: uuid})) } db.Config.update(updateNode, removeQuery); } 但我得到这个错误: 错误:无法识别jsontypes的相等运算符查询失败PostgreSQL说:无法识别jsontypes的相等运算符 我将不胜感激任何帮助,可以给我! 谢谢 :)

Passport身份validation将失败并显示关联的模型

我在数据库build模方面做了一个补充,我想把我的用户附加到一个特定的公司。 我遵循Sequelize文档来创build用户和公司之间的一对一关系,但似乎已经搞砸了我的身份validation,因为代码的引入已经将每次提交的login提交给我的身份validation的failureRedirect部分码。 有没有人遇到类似的问题? 用户模式: var bcrypt = require('bcrypt-nodejs'); module.exports = function(sequelize, DataTypes) { var User = sequelize.define('user', { user_id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, firstName: { type: DataTypes.STRING, field: 'first_name' }, lastName: { type: DataTypes.STRING, field: 'last_name' }, email: { type: DataTypes.STRING, isEmail: true, unique: true }, password: DataTypes.STRING, organizationId: { type: […]

根据事务处理钩子

我想在我的用户模型上的afterCreate上创build一个sequelize挂钩。 当我只是创build一个没有交易的用户时,它工作得很好。 但是如果我在事务中运行我的创build语句挂钩运行之前提交。 用户模型挂钩 hooks: { afterCreate: userModule.NewUserHook, afterBulkCreate: userModule.NewUserHook } 钩子function NewUserHook: function NewUserHook(user, options){ console.log('Inside hook'); } 交易在options.transaction中是可以接受的。 在交易提交之后,有没有办法挂钩?

pipe理数据库国际化的最佳方法

我有一些麻烦,在我的数据库中pipe理我的i18n 现在我的应用程序中只有两种语言可用,但为了可扩展性,我希望以“最好”的方式来实现。 我可以重复像description_fr, description_en所有字段description_fr, description_en但我完全没有这个舒适。 我现在所做的是一个外部表格,将其称为content ,其架构如下所示: id_ref => entity referenced id (2) type => table name (university) field => field of the specific table (description) lang => which lang (fr, en, es…) content => and finally the appropriate content. 我认为精确可以是重要的,我使用sequelizeJS作为ORM。 所以我可以使用一个有用的钩子afterFind,afterCreate和afterUpdate。 所以每当我想find一个资源的例子,find它后,我的钩子检索这个资源的所有内容,并确定我的对象与货物价值。 它的工作,但我不爱这个。 但是我有这个麻烦: 这大大增加了我对数据库的请求数量:例如,如果我select50行,我必须做50个请求更多..,而只是一个特定的模型。 如果我有嵌套模型,它是指数… 那么,通过内容提取数据是非常复杂的。 示例find具有特定名称的大学很复杂。 而且这是更新等很多工作… 所以我想知道,如果这是一个好主意,直​​接在相关表中保存为JSON,数据。 就像是 { fr : […]

使用sequelize查找“modelA”的所有实例,而不使用“modelB”的相关实例

我正在使用sequelize ,node.js模块。 我想find没有ModelB关联实例的ModelA的所有实例。 ModelA的每个实例都有ModelB的许多实例。 这是我目前没有工作的尝试。 ModelA.findAll({ logging: console.log, where: { //- Where number of ModelB === 0? } include: [ { model: ModelB, where: { //- Where doesn't exist? }, }, ], }) 我包括了logging:console.log ,以显示它需要输出一个我可以在别处运行的mysql查询,这就是为什么我不只是在返回所有用户之后在promise链中过滤下一个promise的用户。

三维连接表与续集

我正在尝试使用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, […]