我正在使用aldeed:simple-schema,这是代码:
Cities = new Mongo.Collection('cities');
Cities.insert({
name: 'Oslo'
});
Cities.insert({
name: 'Helsinki'
});
Contact = new SimpleSchema({
city: {
type: String,
allowedValues: Cities.find().map((e) => e.name) // written ES6-style for readability; in fact, here goes an ES5 anonymous function definition
}
});
它所做的是将当前存在的城市从Cities
集合显式绑定到Contact
模式的某些字段的允许值,因此不可能存储除"Oslo"
or之外的任何其他值"Helsinki"
。
但是在发布quickForm时,该字段(select
实际上)没有选项。
如果我将映射函数重写为
(e) => {
console.log(e);
return e.name;
}
然后我得到
I20150911-18:07:23.334(4)? { _id: 'GLAbPa6N4W4c9GZZh', name: 'Oslo' }
I20150911-18:07:23.333(4)? { _id: 'vb64X5mKpMbDNzCkw', name: 'Helsinki' }
在服务器日志中,这让我认为映射功能是正确的。
同时,在 Mongo 控制台中执行所有这些操作都会返回理想的结果:
production-d:PRIMARY> db.cities.find().map(function (e) { return e.name; });
[ "Oslo", "Helsinki" ]
我做错了什么?是否不可能allowedValues
在运行时填充简单模式的数组?