Articles of orm

续集多对多关联 – 未find方法

我有两个n:m sequelize模型,如下所示 // Organization Model module.exports = { attributes: { id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true }, name: { type: Sequelize.STRING, required: true }, }, associations: function() { Organization.belongsToMany(Contact, { through : OrganizationContact, foreignKey: { name: 'organizationId', allowNull: false } }); } }; // OrganizationContact Model module.exports = { attributes: { id: { […]

使用Sequelize.jsjoin特定的列

我正在尝试使用Sequelize.js在特定列上join一些表格。 到目前为止,我的代码是这样的: table_1.findall({ include: [{ model: table_2 attributes: ['id', 'another_id'] include: [{ model: table_3 required: true attributes: ['time'] }] }] }) 每个表的主键都是“id”。 这似乎等同于下面的SQL(为了简洁起见,我显示了SELECT *,因为这不是这个问题的焦点): SELECT * FROM table_1 as t1 LEFT OUTER JOIN table_2 as t2 ON t1.id = t2.t1_id INNER JOIN table_3 as t3 ON t2.id = t3.t2_id 我想有这样的东西: SELECT * FROM table_1 as […]

使用Bookshelf.js在透视模型上设置时间戳

我有两个Bookshelf模型在多对多的关系,我想附加或分离一些关系时更新时间戳。 这是我的模型: var Video = Bookshelf.Model.extend({ tableName: 'video', program: function(){ return this.belongsToMany(Bookshelf.model('Program'), 'programvideo', 'videoId', 'programId'); } }); var Program = Bookshelf.Model.extend({ tableName: 'program', videos: function(){ return this.belongsToMany(Bookshelf.model('Video'), 'programvideo', 'programId', 'videoId'); } }); 一切正常,当我使用 prgm.videos().attach(videos); 但是有什么办法给这个关系添加时间戳吗? 我是否需要在Bookshelf中定义枢纽模型? 谢谢

BookshelfJS关系 – hasMany

我正在使用BookshelfJS作为我的ORM。 我有3个模型。 TripHistory user_id route_id Route id name Users id name 从我的用户模型,我有一个关系 trips() { return this.hasMay(TripHistory) } 和TripHistory有类似的关系 route() { return this.belongsTo(Route) } 这里的问题是,当我尝试获取行程历史logging时,我只想得到路线名称。 运行 withRelated: ['trips.route'] 回报 "trips": [ { "id": 1, "user_id": 1, "route_id": 1, "driver_id": 1, "trip_id": 1, "created_at": "2017-08-09T16:46:34.000Z", "updated_at": "2017-08-09T16:46:34.000Z", "route": { "id": 1, "pickup": "Fadeyi", "destination": "Jibowu", "departure_time": "6:00", […]

我怎样才能编写一个需要操作mySQL数据库的testing模块?

我正在写一个nodejs npm模块,需要一个mySQL数据库来操作。 我想写一个连接到“假”数据库的testing模块,并对其进行一些操作。 我已经在我的开发机器中本地安装了我的testing数据库,但是我希望这个testing可以在任何机器上运行。 编写依赖于操作mySQL数据库的集成testing模块的最佳做法是什么? 是否存在networking中的任何公共服务,我可以得到一个临时的MySQL用户/密码,我可以在有限的时间/大小做一些操作?

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… }); 我在这里没有看到什么?

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

我有许多到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`, […]

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 }, […]

如何使用node-orm2编写OR条件?

有没有可能做这样的事情? User.find({'$or': [{user_id: 1}, {user_id: 2}]}, function(err, items){ }

dynamic地定义并获取水线中的模型

我想知道在Waterline中是否有可能通过Node-ORM2中的名称来定义模型或获取模型。 定义: var Person = db.define("person", { name : String, surname : String, age : Number, // FLOAT male : Boolean, continent : [ "Europe", "America", "Asia", "Africa", "Australia", "Antartica" ], // ENUM type photo : Buffer, // BLOB/BINARY data : Object // JSON encoded }, { methods: { fullName: function () { return this.name […]