如何dynamic创build集合名称(取决于用户信息)
我想创build一个更深的收集..数据更加组织。
我知道如何访问数据,如何检索信息,但我不知道如何创build模式。
这是我的实际模式:
var MySchema = new Schema ({ event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } });
我想要改变:
var BookingSchema = new Schema ({ monday: { event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } }, friday: { event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } }, saturday: { event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } } sunday: { event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } } });
这不是很干燥,所以我想知道是否可以dynamic改变星期的名字。 如果可以的话,该怎么办?
如果这是可能的,真正的模式将是:
dinamicallyDay: { event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } }
这是我的第一个问题,现在是我第二个问题。
如果第一个问题是可能的,我怎么能在dinamicallyDay内创build入口?
例如,有人想要注册到星期一,但这一天已经存在于我的数据库中,我想把这个寄存器里面,就像这样:
monday: { 1: { event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } } }
这个有可能?
如果是的话,你能帮我吗?
Schema
构造函数接受一个对象,所以没有理由不能dynamic构build它。
var mySchema = {} ['mon', 'fri', 'satur', 'sun'].forEach(function(day) { mySchema[ day + 'day' ] = [{ event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } }]; }); var BookingSchema = new Schema(mySchema);
请注意,我把它改成了一个数组,所以现在你可以把更多的事件推到同一天做类似的事情
db.update({'Search here'}, { $push : { friday : { event: { full: 'value', date: 'value', name: 'value' }, person: { name : 'value', phone: 'value', email: 'value', obs : 'value' } } });