2016-10-13 110 views
0

這裏陣列的工作是我的架構:貓鼬填充不具有的ObjectID

/** Schemas */ 
var profile = Schema({ 
    EmailAddress: String, 
    FirstName: String, 
    LastName: String, 
    BusinessName: String 
}); 

var convSchema = Schema({ 
    name: String, 
    users: [{ 
     type: Schema.Types.ObjectId, 
     ref: 'Profiles' 
    }], 
    conversationType: { 
     type: String, 
     enum: ['single', 'group'], 
     default: 'single' 
    }, 
    created: { 
     type: Date, 
     default: Date.now 
    }, 
    lastUpdated: { 
     type: Date, 
     default: Date.now 
    } 
}); 

/** Models */ 
db.Profiles = mongoose.model('Profiles', profile); 
db.Conversations = mongoose.model('ChatConversations', convSchema); 

module.exports = db; 

然後我嘗試填充使用下面的代碼(http://mongoosejs.com/docs/populate.html)用戶:

db.Conversations.find(query).populate('users').exec(function (err, records)  { 
    console.log(records); 
}); 

這回recordsusers陣列作爲空白陣列[]

我也試過的其他方式(http://mongoosejs.com/docs/api.html#model_Model.populate):

db.Conversations.find(query, function (err, records) { 
    db.Conversations.populate(records, {path: "users", select: "BusinessName"}, function (err, records) { 
     console.log(records); 
    }); 
}); 

結果相同。當我檢查參考資料收集記錄在那裏。

任何想法這裏有什麼錯?

+0

一切似乎都對。併爲我工作。不能看到任何錯誤 – chirag

+0

哪一個工作? – Shreejibawa

回答

3

我把它通過重命名模型(第3 arguement)工作:

mongoose.model("Profiles", profile, "Profiles");

的問題是貓鼬在尋找profiles集合,但它的存在,在數據庫Profiles。所以我將它重命名爲Profiles以匹配確切的名稱。

Phewww!感謝我。

0

我發現您已聲明配置文件架構但引用配置文件。

ref: 'Profiles' 

var profile = Schema({ 
EmailAddress: String, 
FirstName: String, 
LastName: String, 
BusinessName: String 
}); 
+0

這兩者之間沒有關係。它只是一個變量。請檢查我的答案瞭解更多詳情。 – Shreejibawa