我有一个带有Nodejs
和Mongoose
的简单应用程序,我正在尝试获取嵌套结果,但是它不起作用。
我在2个文件中有2个模型:
我使用以下版本:
mongodb: "version": "3.1.3"
mongoose: "version": "5.2.9"
users.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
// create user Schema & model
const userSchema = new Schema({
IdUser:{
type: Number
},
Email:{
type: String,
required: [true, 'Email field is required']
},
Nick:{
type: String,
required: [true, 'Nick field is required']
},
Password:{
type: String,
required: [true, 'Password field is required']
},
Admin:{
type: Boolean,
default: false
},
Results:{
type: Schema.Types.ObjectId,
ref: 'result'
}
});
const user = mongoose.model('user', userSchema);
module.exports = user;
results.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
// create results Schema & model
const resultSchema = new Schema({
IdEvent:{
type: Number
},
User: {
type: Schema.Types.ObjectId,
ref: 'user'
},
Result: {
type: Number
}
});
const result = mongoose.model('result', resultSchema);
module.exports = result;
之后,我使用以下查询:
//RESULTS
//http://localhost/getEvents?IdEvent=1
router.get('/getResults',function(req,res,next){
Result.find({IdEvent:req.query.IdEvent}).populate('User')
.then(function(result){
res.send(result);
});
});
在邮递员上,我得到以下结果:
[
{
"_id": "5b83cd2913769f1e267191cd",
"IdEvent": 2,
"IdUser": 1,
"Result": 1
},
{
"_id": "5b83cd3013769f1e26719215",
"IdEvent": 2,
"IdUser": 2,
"Result": 2
}
]
我想要这个结果:
[
{
"_id": "5b83cd2913769f1e267191cd",
"IdEvent": 2,
"User": {1, "email@email.com","Nick"}
"Result": 1
},
{
"_id": "5b83cd3013769f1e26719215",
"IdEvent": 2,
"User": {2, "email@email.com","Nick"}
"Result": 2
}
]
怎么了?
提前谢谢!
答案 0 :(得分:0)
如果在这里为您提供一些链接,请参考它们,并了解猫鼬中的填充功能以及如何使用嵌套查询...
https://mongoosejs.com/docs/populate.html
https://medium.com/@nicknauert/mongooses-model-populate-b844ae6d1ee7