嵌套猫鼬模式不起作用

时间:2018-08-28 10:58:49

标签: node.js mongodb mongoose model nested

我有一个带有NodejsMongoose的简单应用程序,我正在尝试获取嵌套结果,但是它不起作用。

我在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
    }
]

怎么了?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果在这里为您提供一些链接,请参考它们,并了解猫鼬中的填充功能以及如何使用嵌套查询...

https://mongoosejs.com/docs/populate.html

https://medium.com/@nicknauert/mongooses-model-populate-b844ae6d1ee7