将allowedValues绑定到simple-schema中的集合中的值

时间:2015-09-11 14:14:01

标签: mongodb meteor runtime meteor-autoform simple-schema

我使用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""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数组?

0 个答案:

没有答案