我有一个模型文件,汇集了我所有的Mongoose模型。我想用可变数量的字段初始化的模型之一。目前我正在定义比我想要的更多的字段:
TallySchema = new mongoose.Schema
0: Number
1: Number
...
20: Number
显然这并不理想。我看到Mongoose会让你指定Schema定义之外的选项,但是看不到如何添加新字段(或者我想,在Mongoose中添加路径)。
答案 0 :(得分:6)
基于mongoose plugin documentation看起来你可以这么做:
schema.add({ field: Number })
答案 1 :(得分:3)
这需要进行验证,但应该可以查看来源:
在Schema构造函数中,它只是将定义对象传递给this.add()
(source)。
然后在Schema.prototype.add
(source)内创建实际路径。
所以,你似乎需要做的就是:
// not sure what this looks like in CoffeeScript
TallySchema.add({ /* new property definition here */ });
答案 2 :(得分:1)
我在Mongoose documentation page:
中找到了这个var ToySchema = new Schema;
ToySchema.add({ name: 'string', color: 'string', price: 'number' });
答案 3 :(得分:0)
您可以使用'mixed'类型来封装您的值。虽然它不可能让它们处于顶层但是它的效果很好。
new mongoose.Schema({
average: Number,
countPerRating: mongoose.Schema.Types.Mixed,
});
这是mapreduce架构的摘录。我使用混合类型存储某人给出一定评级的次数,所以我们可以说“10个1星评级,45个4星评级”等等。
混合型非常适合。