问题描述:如题,其他的更新的字段都能更新,只有新加的属性没有追加进去,
语句结构如下:
doc.productNum = 1;
doc.checked = 1;
userDoc.cartList.push(doc);
原因:
因为Mongoose是个ODM (Object Document Mapper),类似于操作关系型数据库使用的ORM(Object Relational Mapper),我们使用Mongoose取到的数据的结构是要依赖于我们定义的schema结构的。增加的属性在(goods)schema中没有定义,所以我们给goods临时附加productNum和checked属性是无效的。
在这里需要说明一下,就是虽然我们给schema附加属性,但是这只是实现能真正挂在该schema上,并没有添加到schema中。比如上述的只是想实现在添加商品的时候,顺便把productNum和checked的值赋给users表中。我们无须把属性存储到goods中。
解决办法:
newdoc = {//新创建一个对象,实现转换mongoose不能直接增加属性的坑
productNum: "1",
checked: "1",
productId: doc.productId,
producName: doc.producName,
salePrice: doc.salePrice,
productName: doc.productName,
productImage: doc.productImage,
}
userDoc.cartList.push(newdoc);
总算是解决了, -_-!!!