mongoose-mpath 模块正在创建文档但未分配给它的父级

Posted

技术标签:

【中文标题】mongoose-mpath 模块正在创建文档但未分配给它的父级【英文标题】:mongoose-mpath module is creating the document but not assigned to it's parent 【发布时间】:2021-06-08 18:44:35 【问题描述】:
const category, parent = newCategory;
        const newCat = new Category(
            _id: new mongoose.Types.ObjectId(),
            name: category,
            parent: parent
        ).save((err, res) => 
            if(err)  console.log(err)
            else
                console.log("res in create category:", res);
                // io.to(user.room).emit('create-category-to-list', res);
            
        )

登录

   res in create category:     
    codewords: [],  
    children: [],  
    _id: 604916cf866a154e284b2e29, 
    name: 'nameofasdasdasdcat',   
    parent: 60490c9ce00e8b7a38cf4752,
    path: '60490c9ce00e8b7a38cf4752#604916cf866a154e284b2e29',  
    _v:0

在此处创建了文档,但未将其分配给其父级。

这里可以看到父子数组是空的

root:      
    children: [],  
    _id: 60490c9ce00e8b7a38cf4752,    
    name: 'root',         
    path: '60490c9ce00e8b7a38cf4752',   
    _v:0

这里我使用 mongoose pulgin(mongoose-mpath) 创建树形数据。

对于猫鼬-mpath https://www.npmjs.com/package/mongoose-mpath

【问题讨论】:

【参考方案1】:

在getChildrenTree函数中需要传递选项为lean:false

const parent = await Folder.findOne( _id: user.rootId );
const tree = await parent.getChildrenTree(
    
     populate: 'codewords', 
     options:  lean: false  //you need to pass options as lean: false
   );
console.log( tree );

登录


  tree: [
    
      codewords: [],
      children: [],
      _id: 604c6c5bc8a2e03ee43c4c7b,
      name: 'Category-name-2',
      parent: 604c690b87924705a401f9ce,
      path: '604c690b87924705a401f9ce#604c6c5bc8a2e03ee43c4c7b',
      __v: 0
    ,
    
      codewords: [],
      children: [],
      _id: 604c6ce2c8a2e03ee43c4c7d,
      name: 'Category-name-2',
      parent: 604c690b87924705a401f9ce,
      path: '604c690b87924705a401f9ce#604c6ce2c8a2e03ee43c4c7d',
      __v: 0
    ,
    
      codewords: [],
      children: [Array],
      _id: 604c6d21c8a2e03ee43c4c7e,
      name: 'Category-name-3',
      parent: 604c690b87924705a401f9ce,
      path: '604c690b87924705a401f9ce#604c6d21c8a2e03ee43c4c7e',
      __v: 0
    
  ]

为了您更好地理解,您可以查看 mongoose-mpath github 问题部分 ==> https://github.com/vikpe/mongoose-mpath/issues/10

【讨论】:

以上是关于mongoose-mpath 模块正在创建文档但未分配给它的父级的主要内容,如果未能解决你的问题,请参考以下文章

Log4Net 正在创建文件但未写入文件

Apache 无法启动 - 表示 httpd 模块已加载但未运行

UIViewControllers 正在创建但未在状态恢复中显示

module 在本地声明组件,但未导出

Spring MVC 控制器工作但未创建指定的响应 URL,它正在从请求映射字符串创建 url

Spring MVC 控制器工作但未创建指定的响应 URL,它正在从请求映射字符串创建 url