抱歉咖啡脚本。
用这个把头发拉出来。我有一个类似于这样的架构:
reviewSchema = Schema
title: String
meta:
author: String
date: String
article: String
tags: [
type: Schema.Types.ObjectId
ref: "Tag"
]
images: [
type: Schema.Types.ObjectId
ref: "Image"
]
attr:
appearance: String
aroma: String
flavor: String
from: String
grade: String
lineage: String
name: String
overall: String
packaging: String
pickupdate: String
price: String
reason: String
story: String
type: String
Review = mongoose.model 'Review', reviewSchema
我还有一些数据已经汇总到一些带有相应数据的JSON文件中。当我去创建一个新模式时,我会查看该文件并获取JSON并通过以下方式创建一个新的评论对象:
thisReview = new Review json,最小化:false
如果我在创建'thisReview'之前调试json json,我看到我的'attr'键正确地填充了数据但是如果我在console.log'thisReview'或检查数据库,我收到的结果没有' attr'我的文件的关键。 'attr'完全被忽略了。
我确保每个JSON文件的JSON.attr对象都具有来自模式的每个密钥,并且对于那些不存在的字符串具有“”(空)字符串。其他嵌套对象(如架构的元对象)完美填充。
知道发生了什么事吗?
额外信息:当我摆脱attr对象中的键/值对并改为分配: attr:Schema.Types.Mixed
然后成功保存所有数据,包括空(“”)字符串。
任何帮助都会 赞赏。
答案 0 :(得分:2)
type
的{{1}}属性可能会使Mongoose绊倒,以为attr
是一个字符串而不是一个嵌入对象。对属性使用更明确的定义,如下所示:
attr