Tag: orm

使用承诺在钩子钩子

在Sequelize文档中我已经读过,你可以使用callback函数或者在你的钩子中返回promise 。 但是,以下代码无法为我工作 – 对于Sequelize的最新1.x和2.x版本。 我设置了用户模型: var User = function(sequelize, DataTypes) { var User = sequelize.define('User', { firstName: DataTypes.STRING, lastName: DataTypes.STRING, email: DataTypes.STRING, password: DataTypes.STRING }, { hooks: { beforeUpdate: _hashPassword, beforeCreate: _hashPassword } }); return User; }; 这是我的函数,哈希用户的密码,使用承诺(不起作用): function _hashPassword(user) { if (!user.getDataValue('password')) { return Promise.reject(); } return bcryptGenSalt(10) .then(function(salt) { return bcryptHash(user.getDataValue('password'), salt); […]

Node.js – 具有分层数据支持的ORM

就像标题所说,我正在寻找一个支持分层数据的ORM。 例如,我将需要代表一个这样的关系(类别与子类别等…): CREATE TABLE "category" ( "id" SERIAL PRIMARY KEY, "parent" INTEGER NULL DEFAULT NULL REFERENCES "category" ("id") "name" VARCHAR(50) NOT NULL UNIQUE, "description" VARCHAR(100) NOT NULL, "sort_order" INTEGER NULL DEFAULT NULL, ); 有没有人可以做到这一点?

如何定义没有实际外键的续集关系?

我有这样一个现有的数据库: students: name : string school_id : integer schools: name : string students表上的school_id属性不是实际的外键。 这只是一个整数,代表学生与没有任何外键的学校之间的关系。 有了这样的devise,我怎样才能定义关系的sequelize,所以我可以得到一个学生的学校名称(student.school.name)?

SequelizeJS:如何在不使用原始查询的情况下在多个数据库中包含关联(join)

假设DB“A”中有“Account”表,DB“B”中有“ConversationHistory”表。 我的伪初始化脚本是: // Connection Script var db1 = new Sequelize("A", user, password) var db2 = new Sequelize("B", user, password) // Association Account.hasMany(ConversationHistory, {foreignKey: "sender_id", as: "conversations", constraints: false}) ConversationHistory.belongsTo(Account, {foreignKey: "sender_id", as: "sender", constraints: false}); // But when I use include in findMethod like ConversationHistory.findAll({ where: { … }, include: [{ model: Account, where: { […]

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 – 更新行而不更改updated_at字段

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

JavaScript数组对象转换

我不完全确定我应该命名这个问题,所以随时编辑标题。 我正在运行一个angular度的应用程序,并使用node.js结合express和sequlize (对于我的ORM ) 现在,很多人可能知道何时使用ORM来处理另一个Objects内部的Object ,例如, user对象中可能有一个country对象,如下所示: user = {id: 222, username: 'Marc', name: 'Marc Ras', country: {id: 1, code: 'DK', name: 'Denmark'}} 现在这很好。 将所有这些对象绑定在一起使得在前端工作起来更容易。 然而相反,这是相当烦人的。 以示范为目的,以上述的对象为例。 但让我们添加一个property的array of items user.items = [{id: 1 , name:'item1'}, {id: 2, name: 'item2'}] 现在,如果我想将这个对象添加到我的数据库,我会发送组合的对象到我的快递路线: var user = { id: 222, username: 'Marc', name: 'Marc Ras', country: {id: 1, […]

Sequelize hasOne Relationship association方法不是函数吗?

我正在使用Node和Sequelize ORM的后端。 正在使用的数据库是PostgreSQL。 我之前在代码中使用了hasOne() ,并且它非常createAssociation() ,之前使用hasOne()关系的所有createAssociation() , getAssociation()方法hasOne()工作。 然而,由于某种原因,现在给我一个问题。 index.js const Connection = new Sequelize( 'postgres', 'postgres', null, { dialect: 'postgres', host: '192.168.99.100', port: '5432', } ); const ModelSeven = Connection.define('modelSeven', ModelSevenSchema), ModelFive = Connection.define('modelFive', ModelFiveSchema), ModelOne = Connection.define('modelOne', ModelOneSchema), ModelSix = Connection.define('modelSix', ModelSixSchema), ModelThree = Connection.define('modelThree', ModelThreeSchema), ModelFour = Connection.define('modelFour', ModelFourSchema), ModelOne.hasOne(ModelThree); // Defines […]

在Bookshelf JS中使用相关的集合

在使用Bookshelf Collections时遇到问题,而在API级别的文档中找不到答案,这很难说明如何将各个部分组合在一起。 使用Bookshelf的以下设置,包括模型registry插件: const knexConfig = require('../knexfile')[process.env.NODE_ENV || 'development']; const knex = require('knex')(knexConfig); const bookshelf = require('bookshelf')(knex); bookshelf.plugin('registry'); 假设存在以下模型: const Foo = bookshelf.model('Foo', { tableName: 'foos', bars: function() { return this.hasMany('Bar'); } }); const Bar = bookshelf.model('Bar', { tableName: 'bars', foo: function() { return this.belongsTo('Foo'); } }); 我们有一些批量操作,我们希望在整个Bar对象集上执行。 我们不想迭代每个Bar ,而是希望将其减less为单个查询。 所以我们创build一个Bars的集合: const Bars = bookshelf.Collection.extend({ […]