Mongodb 将AllowedValue绑定到简单架构中集合中的值

Mongodb 将AllowedValue绑定到简单架构中集合中的值,mongodb,meteor,runtime,meteor-autoform,simple-schema,Mongodb,Meteor,Runtime,Meteor Autoform,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

我正在使用,下面是代码:

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
    }
});
它所做的是将当前存在的城市从
城市
集合显式绑定到
联系人
模式的特定字段的允许值,因此不可能存储除
“奥斯陆”
“赫尔辛基”
以外的任何其他值

但是在发布时,字段(
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
数组?

没有选项,可能也没有允许的值。在启动simpleschema时,集合不存在,因此调用不返回任何内容。也许你可以通过改变加载顺序找到一个解决办法。没有选项,也可能没有允许的值。在启动simpleschema时,集合不存在,因此调用不返回任何内容。也许您可以通过更改加载顺序找到解决方法。