【发布时间】:2020-06-01 13:42:22
【问题描述】:
我有一个问题,我有这样的 Fixtures 架构:
const FixtureSchema = mongoose.Schema({
home: {
club: {
type: mongoose.Schema.Types.ObjectId,
ref: 'club'
},
score: {
type: Number,
default: 0
},
scorers: [
{
player: {
type: mongoose.Schema.Types.ObjectId,
ref: 'player'
}
}
]
},
away: {
club: {
type: mongoose.Schema.Types.ObjectId,
ref: 'club'
},
score: {
type: Number,
default: 0
},
scorers: [
{
player: {
type: mongoose.Schema.Types.ObjectId,
ref: 'player'
}
}
]
},
match_num: {
type: Number,
required: true
},
date: {
type: Date,
default: Date.now()
}
});
module.exports = Fixture = mongoose.model('fixture', FixtureSchema);
俱乐部架构:
const ClubSchema = new mongoose.Schema({
name: {
type: String,
required: true
}
});
module.exports = Club = mongoose.model('club', ClubSchema);
播放器架构:
const PlayerSchema = new mongoose.Schema({
name: {
type: String,
require: true
},
club: {
type: mongoose.Schema.Types.ObjectId,
ref: 'club'
},
stats: {
starts: {
type: Number,
default: 0
},
goals: {
type: Number,
default: 0
},
assists: {
type: Number,
default: 0
},
goal_streak: {
type: Number,
default: 0
}
}
});
module.exports = Player = mongoose.model('player', PlayerSchema);
我提出这样的要求:
router.get('/', async (req, res) => {
try {
const fixture = await Fixture.find()
.populate('player', ['name'])
.populate('club', ['name']);
res.json(fixture);
} catch (err) {
console.error(err.message);
}
});
邮递员获取请求给了我:
[
{
"home": {
"score": 1,
"club": "5e3dfcffb52ec61c30fc44cd",
"scorers": [
{
"_id": "5e4aac5d81d92b368398bd4d",
"player": "5e3dfddd4884f51cb7ee61e9"
}
]
},
"away": {
"score": 0,
"club": "5e3dfd18b52ec61c30fc44ce",
"scorers": []
},
"date": "2020-02-17T15:07:57.229Z",
"_id": "5e4aac5d81d92b368398bd4c",
"match_num": 1,
"__v": 0
}
]
为什么没有填写球员或俱乐部的名字???当它没有存储在数组或对象中时,它可以工作。我尝试寻找其他主题的建议,但找不到与此相关的任何内容。
感谢您的任何回复和建议
【问题讨论】:
标签: node.js express mongoose schema populate