Mongoose 在数组上填充函数

Posted

技术标签:

【中文标题】Mongoose 在数组上填充函数【英文标题】:Mongoose populate funciton on array 【发布时间】:2021-02-23 18:56:42 【问题描述】:

我在猫鼬函数中填充时遇到问题, 这是我的架构:

event.js 文件:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
const Event = new Schema(
  name:  String, 
  posts: [
    type: Schema.Types.ObjectId,
    ref: "Post",
  ]
  
);

module.exports =  mongoose.model('Events',Event);

post.js 文件:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

const Post = new Schema(
  name: String,
  content: String,
  picture: String
)

module.exports = mongoose.model('Posts',Post)

向活动添加新帖子时,我使用此路线并执行以下操作:

router.post("/:id",async (req,res)=>
    let id = req.params.id;
    const postToAdd = new Post(
        name : req.body.name ,
        content: req.body.content,
        picture: req.body.picture,
    );

    postToAdd.save().then((err,res)=>
        if(err) console.log(err)
        else console.log(err)
    )

    const evetToUpdate = await event.findById(id)
    evetToUpdate.posts.push(postToAdd)
    const newEvent = await evetToUpdate.save()
    
    event.findById(id).
    populate('posts').
    exec(function(err,res)
        if(err) console.log(err)
        else console.log(res.Post)
    )
   
)

这个过程的结果是我有一个新帖子链接到没有填充数据的事件。

【问题讨论】:

尝试填充('posts') 收到错误:尚未为模型“Post”注册架构 尝试查看架构的创建,可能是您的架构创建为帖子而不是帖子 【参考方案1】:

好的, 愚蠢的错误, 在参考文献中,我需要提及集合的确切名称 Post。

【讨论】:

以上是关于Mongoose 在数组上填充函数的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose 填充返回空数组

Mongoose - 无法在路径 notification.from 上使用排序填充,因为它是文档数组的子属性

Mongoose:填充嵌套的 id 数组

在 Mongoose 中填充包含 ref 的数组数组

Mongoose 填充包含 ref 的对象数组

Mongoose 填充包含 ref 的对象数组