Tag: orm

如何使用Mongoose从另一个虚拟内部访问虚拟属性

我有一个发票模型,使用虚拟属性来计算税,小计,总计等值。我有的问题是,一些虚拟属性需要能够引用其他虚拟属性。 例如,这里是发票的Mongoose模式: var InvoiceSchema = Schema({ number: String, customer: {ref:String, email:String}, invoiceDate: {type: Date, default: Date.now}, dueDate: {type: Date, default: Date.now}, memo: String, message: String, taxRate: {type:Number, default:0}, discount: { value: {type:Number, default:0}, percent: {type:Number, default:0} }, items: [ItemSchema], payment: {type: Schema.Types.ObjectId, ref: 'Payment'} }); InvoiceSchema.virtual('tax').get(function(){ var tax = 0; for (var ndx=0; ndx<this.items.length; ndx++) […]

Bookshelf.jsregistry

我试图使用Bookshelf.js的registry插件,因为我认为我遇到了循环依赖,但我没有得到它。 在我得到这个错误之前,我得到一个错误: [Error: A valid target model must be defined for the category hasMany relation] 我有一个类别和标签模型,但我不断收到错误 [Error: The model Tag could not be resolved from the registry plugin.] 我的类别模型如下所示: var knex = require('knex')(config.knex); var bookshelf = require('bookshelf')(knex); bookshelf.plugin('registry'); var Category = bookshelf.Model.extend({ tableName: 'category', tag: function() { return this.hasMany('Tag', 'category_id'); } }); module.exports = bookshelf.model('Category', […]

如何使用Sequelize在JSONB字段上创buildUNIQUE约束

我在NodeJS中使用Sequelize ORM来pipe理postgreSQL数据库。 我在我的表中使用JSONB数据types,我需要JSONB字段上的索引和此JSON属性上的唯一约束。 如果我必须在这里做一个经典的SQL我的脚本: CREATE TABLE tableJson (id SERIAL PRIMARY KEY, content JSONB NOT NULL); CREATE INDEX j_idx ON tableJson USING gin(content jsonb_path_ops); CREATE UNIQUE INDEX content_name_idx ON tableJson(((content->>'name')::varchar)); 我发现如何使用INDEX创build表,但不知道如何处理UNIQUE约束。 以下是我的脚本示例: var tableJson = sequelize.define('tableJson', { content: Sequelize.JSONB }, { indexes: [{ fields: ['content'], using: 'gin', operator: 'jsonb_path_ops' } }); 有没有解决我的问题? 如果没有,我可能会使用sequelize.query方法来执行原始查询,但这不是非常演变。 任何帮助,将不胜感激!

RedbeanPHP喜欢nodejs

我喜欢RedBeanPHP的工作方式,但它是用PHP编写的。 所以我的问题是:是否有任何即时的NodeJs的ORM,像RedbeanPHP一样工作?

如何创build与SailsJS中另一个模型的对象单向关联的对象列表?

我有模型Playlist.js和User.js。 我想在播放列表中有一个用户列表,他们可以回答他们的评论。 我不希望该属性出现在用户。 (即单向关联) Playlist.js module.exports = { attributes: { id: { type: 'integer', autoIncrement: true, primaryKey: }, name: { type: 'string', size: 128, required: true }, // many to many relationship with role roles_with_access: { collection: 'role', via: 'playlist', through: 'rolehasplaylist' }, // THIS ATTRIBUTE ASSOCIATE WITH ONE USER // BUT INSTEAD OF THAT […]

续集迁移脚本抛出errorUnhandled拒绝SequelizeBaseError:SQLITE_ERROR:没有这样的表

我已经写了sequelizer的迁移javascript来改变现有的列在一个表中,但是当我运行命令sequelizer db:migrate ,它给出的错误 == 20170212050240-alter_col_tag_subject: migrating ======= Unhandled rejection SequelizeBaseError: SQLITE_ERROR: no such table: subject_tags == 20170212050240-alter_col_tag_subject: migrated (0.241s) 这里是迁移文件的代码 'use strict'; module.exports = { up: function (queryInterface, Sequelize) { return [ queryInterface.changeColumn( 'subject_tags', 'tag', { type: Sequelize.STRING, unique: true, validate: { len: [1, 250] } } ), queryInterface.changeColumn( 'subject_tags', 'tag_description', { type: Sequelize.STRING, allowNull: […]

如何以编程方式自动化sequelize请求语句?

我使用sequelize作为Object Relational Mapper连接到PostgreSQL数据库。 下面的语句很好,但我不得不手动编写每个请求。 global.db.dataBaseTable.build().instanceMethod(successcb, data, errcb); 有没有办法使用充满命令的数组来构build这个语句来使用循环创build多个语句? 以下是我使用的代码的一个例子,但是编译器会返回错误。 var ary_db_table = ["aTable", "bTable", "cTable"] for(var i = 0; i<=1; i++){ global.db.ary_db_table[i].build().instanceMethod(successcb, data, errcb) }

如何在Sails.js / Waterline中执行多对多的Where子句?

我有这个代码 Image.find({ tags: {id: 3}}).exec(console.log); 这是错误的,但我的意图是find所有的图像tag id 3 。 一个图像可以有很多标签,许多图像可以用相同的标签(多对多)来标记。 型号代码。 图片 module.exports = { attributes: { tags: { collection: 'Tag', via: 'images' } } }; 标签 module.exports = { attributes: { images: { collection: 'Image', via: 'tags' } } }; 我不想使用SQL原始查询,也不想使用N+1查询来填充所有内容。 我也尝试使用.populate()通过使用Image.find(3).populate("images")…但它只会填充图像,但每个图像不会有标签,所以这是行不通的我。

续订一对一的关系

我有两个模型,video和帧。 Frame.belongsTo(models.Video); Video.hasMany(models.Frame, { as: "Frames" }); 我现在需要一种方法来指定一个video的第一帧和最后一帧,但不能得到它的工作。 我试过这个: Video.hasOne(Frame, { as: "FirstFrame" }); Video.hasOne(Frame, { as: "LastFrame" }); 但是这会在“帧”表中创buildFirstFrameId和LastFrameId,而不是“video”表。 我需要有video.get / setFirstFrame()和video.get / setLastFrame()函数可用。 我怎样才能做到这一点?

将数据库replace为postgreSQL后,Sequelize时间比较失败

我已经取代MySQL数据库,而不是PostgreSQL,现在我有问题,当我试图find用户通过: .find({ where: { resetPasswordToken: req.params.token, resetPasswordExpires: { gt: Date.now() } } }) .then(function(user){ if (!user) { req.flash('errors', { msg: 'Password reset token is invalid or has expired.' }); return res.redirect('/forgot'); } res.render('account/reset', { title: 'Password Reset' }); }) .catch(function(err){ return next(err); }); 此代码之前工作,我有消息: SequelizeDatabaseError: operator does not exist: timestamp with time zone > bigint […]