猫鼬查询对象

时间:2019-02-24 03:49:30

标签: node.js mongodb mongoose

问题,我使用猫鼬创建了一个对象的架构。我不知道如何查询author id,该查询将返回author Id

下的对象列表
var mongoose = require("mongoose");
var bookedSchema = new mongoose.Schema({
   origin: String,
   destination: String,
   author: { id: { type: mongoose.Schema.Types.ObjectId, ref: "User"}, username: String},
   Date: {type: Date, default: Date.now}
});
module.exports = mongoose.model("Booked", bookedSchema);

在我的路线上,我有一个查询find({}),而不是{},我想查询作者ID,它将返回作者ID下的对象列表。我尝试了findById(author:{id:req.user._id}),但返回了空答案。任何想法如何做到这一点。谢谢!

router.get('/myAccount', function(req, res){
    Booked.find({}).exec(function(err, booked){
        if(err){
            console.log(err);
            // res.redirect('back');
        }else{
            console.log(booked)
            res.render('accounts/myAccount', {booking:booked});
        }
    });
});

1 个答案:

答案 0 :(得分:0)

对于引用的文档,应使用.populate()来填充它们。 改变这个:

Booked.find({}).exec(function(err, booked)

收件人:

Booked.find({}).populate('author').exec(function(err, booked)

或者如果您需要按引用的作者ID查找文档,则可以使用以下方法:

Booked.find({}).populate({
  path: 'author',
  match: { id: { $eq: req.user._id }}
}).exec(function(err, booked)