簡體   English   中英

在mongo模式上定義引用另一個模式以及額外字段的屬性

[英]Defining a property on mongo schema referencing another schema plus extra fields

我試圖使用貓鼬定義一個mongo模式。 我需要創建一個“事件模式”,在其中引用用戶。 因此,我使用用戶架構的引用ObjectId填充“ users”字段。 但是,我還需要在該用戶屬性上添加一些特定於事件的額外字段。 因此,如下所示:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var EventSchema = new Schema({

    name: String,
    date: Date,
    users: [{
        profile: {
            type: Schema.ObjectId,
            ref: 'User'
        },
        RankNumber: Number,
        bibNumber: Number 
    }],
    published: Boolean

});

mongoose.model('Event', EventSchema);

但是,這不起作用。 我不確定要做我想要達到的目標的最佳方法。

因此,如果我有一個構造函數,例如:

function User(bib, rank, profile) {
    this.bib = bib;
    this.rank = rank;
    this.profile = profile;
}

然后我調用該構造函數,並傳入一個用戶ID作為配置文件屬性,MongoDB將創建一個新的ID字段。 我收到這樣的JSON響應:

{
    "name": "Event name",
    "_id: "mongoid",
    "users": [
        {
            "bibNumber": "278",
            "rankNumber": "21",
            "profile": "users mongo _id number",
            "_id": "a new mongo _id"
        }
    ]
}

我需要填充個人資料字段。 但是以下操作無效:

Event.find()。populate('users')。exec(function(err,events){....

正如我在評論中所說,您必須使用:

Event.find(...).populate('users.profile').exec(...);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM