2
我一直試圖讓這個填充的東西工作,但我得到的問題,因爲我沒有得到預期的結果,並沒有錯誤的工作。只是一個空陣列。Mongoose populate()返回沒有錯誤的空數組
我的模特兒看起來像這樣。他們各自的文件
var mongoose = require('mongoose');
var upgradeSchema = new mongoose.Schema({
type: {
type: String,
default: "Any"
},
ability: String,
ability_desc: String,
level: Number,
tag: String
});
mongoose.model('Upgrade', upgradeSchema);
和其他
var mongoose = require('mongoose');
var crypto = require('crypto');
var jwt = require('jsonwebtoken');
var userSchema = new mongoose.Schema({
email: {
type: String,
unique: true,
required: true
},
hero: {
level: Number,
name: String,
type: {
path: String,
heroType: String
},
upgrades: [{
type: mongoose.Schema.Types.ObjectId, ref: 'Upgrade'
}],
unspent_xp: Number,
total_xp: Number,
},
armyTotal: {
type: Number,
default: 0,
max: 5000
},
army:[{
foc_slot: String,
unit_name: String,
unit_cost: Number
}],
username: {
type: String,
required: true,
unique: true,
},
faction: String,
name: {
type: String,
required: true
},
hash: String,
salt: String,
roles: {
type: String,
default: 'player' }
});
我試圖做到這一點
module.exports.profileRead = function(req, res) {
User
.findById(req.payload._id)
.populate('hero.upgrades')
.exec(function (err, user) {
if (err){
console.log(err);
} else {
res.status(200).json(user);
console.log("success");
}
});
}
};
這是一個用戶的例子現在
{
"_id" : ObjectId("57b4b56ea03757e12c94826e"),
"hash" : "76",
"salt" : "2",
"hero" : {
"upgrades" : [
"57b42773f7cac42a21fb03f9"
],
"total_xp" : 0,
"unspent_xp" : 0,
"type" : {
"heroType" : "Psyker",
"path" : ""
},
"name" : "Jon Doe"
},
"username" : "michaelzmyers",
"faction" : "Grey Knights",
"email" : "[email protected]",
"name" : "Michael Myers",
"roles" : "player",
"army" : [],
"armyTotal" : 625,
"__v" : 3
}
,我我嘗試了一個只包含ObjectId在其中的字符串數組si類似於示例,我也嘗試使用ObjectId(「STRINGHERE」),但沒有運氣。他們都只返回一個空數組。但是,如果我擺脫了填充調用(或更改內容從hero.upgrades填充到英雄,或升級),那麼它只是返回一個字符串數組。我覺得問題在於填充以及我如何使用它。但是,當我在我的數據庫(測試升級)中只進行一次升級時,一切正常。現在沒有用。有什麼想法嗎?如果需要,我很樂意提供更多的代碼。
非常感謝你 –
不客氣;) – kkochanski
我懷疑這個問題是由跨多個文件定義模式引起的。 –