在CoffeeScript中使用Mongo和Meteor,我试图用一个对象保存文档:
Test = new SimpleSchema(
tag:
type: Object
)
插入:
test1 = new Meteor.Collection("test", { schema: Test})
test1.insert({ tag: {"name": "campus"} })
结果:文档保存在数据库中,但是"标记"字段永远不会设置。
我采取了几个不同的故障排除步骤:
将数据类型更改为String,以及"标记"字段设置。但是,我想引用一个标记属性,而不必每次都解析字符串。
添加没有架构的集合可以按照我想要的方式保存Object:
test2 = new Meteor.Collection("test2")
test2.insert({ tag: {"name": "campus"} })
编辑:修复了使用blackbox:true标志。请参阅以下答案以获得澄清。
Test = new SimpleSchema(
tag:
type: Object
blackbox: true
)
答案 0 :(得分:1)
根据SimpleSchema文档,所有已定义的属性都必须通过验证。因此,除非添加blackbox:true标志,否则任何没有属性的Object数据类型都将被视为空Object。
来源:http://atmospherejs.com/aldeed/simple-schema#blackbox
如果您有一个Object类型的键,那么该对象的属性也将被验证,因此您必须在架构中定义所有允许的属性。如果无法做到这一点,或者您不关心验证对象的属性,请使用blackbox:true选项跳过对象内所有内容的验证。
答案 1 :(得分:0)
我使用简单的架构并按以下方式创建我的模型,而且我没有任何问题。
Test = new Meteor.Collection("test", {
schema: new SimpleSchema({
ownerId: {
type: String,
},
dateAdd: {
type: Date,
}
})
})
Test.insert({ownerId:"123",dateAdd:"..."})
在咖啡脚本中
Test = new Meteor.Collection("test",
schema: new SimpleSchema(
ownerId:
type: String
dateAdd:
type: Date
)
)