使用Mongoose初始化含多层嵌入式数据的对象实例的正确方法
Mongoose嵌套模型初始化问题解答
不用手动嵌套循环逐个初始化!Mongoose会自动帮你把符合Schema定义的嵌入式数据转换成对应的模型实例,直接用你说的方式1就完全没问题。
原因很简单:你已经在各个Schema里明确定义了嵌套关联——比如B的Schema里指定了C是C.schema,C的Schema里指定a/b/c是[D.schema]。当你调用new db.B(apiResponse)时,Mongoose会递归地遍历传入的普通对象,按照你预先定义的Schema结构,自动把嵌套的对象/数组转换成对应的子文档实例。
你可以做个简单验证,创建完newB后试试这段代码:
console.log(newB.C.a[0] instanceof db.D); // 会输出 true console.log(newB.C instanceof db.C); // 同样输出 true
至于你提到的方式2,属于完全多余的手动操作:不仅代码繁琐,还容易引入bug(比如循环里如果忘记初始化C[key]为数组就会报错),完全没必要这么做。
内容的提问来源于stack exchange,提问作者user7736888
相关产品推荐
相关产品推荐

