人口问题:猫鼬/快递

问题描述

我正在尝试将每条记录附加到创建它的用户, 并且每个用户都附上了他们的记录。 这是我的架构:

1.记录模式:

            const mongoose = require('mongoose')
           const RecordsSchema = new mongoose.Schema(
                {
  
           Title: { type: String,required: true },postedby:[{
          type: mongoose.Schema.Types.ObjectId,ref: 'user'
           }],Author: { type: String,required: true},ISBN: { type: String,Review: { type: String },SelectedFile: { type: String },Likes: { type: Number,default:0},Date: { type: Date,default: Date.now()}
          });

        module.exports = Records = mongoose.model('record',RecordsSchema','record');`

这是用户架构:

         const mongoose = require('mongoose')
         const  userSchema = new mongoose.Schema(
           {
        username: { type: String},email: { type: String,required: true,unique:true},records:[{
        type: [mongoose.Schema.Types.ObjectId],ref: 'record' }],password: { type: String,default: Date.now(),immutable: true }
         });
 
        module.exports = User = mongoose.model('user',userSchema,'user');

获取记录的快速路径:


router.get('/postedby/',(req,res) => {

    Records.find(req.params.id)
    .populate('postedby')
    .exec()
   .then(post =>{
     if (!post) {
     return res.status(400).json({ msg: 'Add Posts' });
   }
 
  else return res.json(post);
  
  }).catch (err => console.error(err))
 
});



路线结果:


       {
       "postedby": [],"Likes": 0,"_id": "5fed8c12a4fb2c1e98ef09f6","Title": "New Age","Author": "Situma Prisco","ISBN": "23422","SelectedFile": "","Review": "","Date": "2020-12-31T08:30:10.321Z","__v": 0
        },

我在填充的用户字段(posteddby) 上得到一个空白数组。 请帮忙,我做错了什么?是的,我确实有一个用户登录

解决方法

你离得太近了。

在您的架构定义中,postedby 字段本身是一个数组。因此,您可以简单地将其定义为:

postedby:[{
    type: mongoose.Schema.Types.ObjectId,ref: 'user'
  }]

确保 ObjectID 正确存储在 postedby 数组中。

此外,您正在尝试根据 ID 查找单个记录,因此您可以使用 findById(req.params.id)findOne({_id:req.params.id}) 返回单个文档。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...