Tag: 鉴别器

mongoose:填写一个歧视的子文件

我想填充子文档的字段,这是一个常见模式( Notificationable分为Message或FriendRequest )的区分元素。 这个问题与这个问题非常相似: mongoosejs:从两个不同的模式中填充一个objectId数组 ,这是两年前没有解决的。 由于mongoose进化了,鉴别者也是,我再次提出这个问题。 我到目前为止所尝试的: Notification.find({_id: 'whatever'}) .populate({ path: 'payload', match: {type: 'Message'}, populate: ['author', 'messageThread'] }) .populate({ path: 'payload', match: {type: 'FriendRequest'}, populate: ['to', 'from'] }) .exec(); 这是行不通的,因为path是一样的。 所以我试了一下: Notification.find({_id: 'whatever'}) .populate({ path: 'payload', populate: [ { path: 'messageThread', match: {type: 'Message'}, }, { path: 'author', match: {type: 'Message'}, }, { […]

mongoose静态types错误:没有这样的方法

同时调用mongoose的静态方法我得到这个错误,我已经find了错误,但仍然找不到相关的解决scheme来解决它 TypeError: Object function model(doc, fields, skipId) { if (!(this instanceof model)) return new model(doc, fields, skipId); Model.call(this, doc, fields, skipId); } has no method 'returnEventType' 模型: var mongoose = require('mongoose'), Schema = mongoose.Schema; var portalSchema = new Schema({ created: { type: Date, default: Date.now() } }), eventType = new Schema({ ID: { type: Schema.Types.ObjectId, […]

Node.js,embedded式对象的Mongoose策略模式(inheritance,鉴别器)

有人可以帮我吗? 我想用mongoose及其embedded的对象来使用策略模式或inheritance/鉴别器。 我知道mongoose支持inheritance/鉴别器的收集,但没有find任何解决scheme的embedded式对象。 不知道如何定义schema / s,或者即使没有真正的重编码也是可能的。 这是我的代码。 来源集合,每个来源可以有一个不同types的运输。 如果Source.getTransport()的调用返回HttpTransport或FileTransport的实例,理想情况是。 [{ _id: "1……", name: 'Source 1', enabled: true, transport: { type: 'Http', url: 'http://some.url' } },{ _id: "2……", name: 'Source 2', enabled: true, transport: { type: 'File', path: '/some/path/here' } }] 我甚至不确定mongoose文档(如HttpTransport / FileTransport)是否应该包含方法read(),并执行所有繁重的工作,或者只是将其保留为configuration对象,并使用外部工厂创build传输实例传递此configuration对象。 var transport = TransportFactory.create(source.getTransport()); 或者我完全错了,还有其他的模式可以使用? 感谢您的任何帮助。