仅仅为了测试,我正在为UberEAT创建一个类似的应用程序。
数据库可能会达到集合限制,因此我创建了两个单独的集合。
首先,我需要餐厅信息,所以我的结构如下:
var PlaceSchema = new Schema({
id: Number,
menuID: Number,
name: String,
cuisine_type: String, (eg; thai, korean, sushi ,etc)
address: String,
opening_time:Date,
closing_time:Date
});
然后我需要显示餐厅的菜单,问题是每个餐厅都有不同数量的菜肴和价格,所以数量不恒定。
这是我构建菜单数据的方式,但我知道这是完全错误的
var MenuSchema = new Schema({
id: Number,
parentID: Number,
name: String,
price: Number
});
任何指导都会很棒!
答案 0 :(得分:1)
如何开始
for restuarant
var PlaceSchema = new Schema({
id: Number,
menusId: [Number],
name: String,
cuisine_type: String, (eg; thai, korean, sushi ,etc)
address: String,
opening_time:Date,
closing_time:Date
});
和菜单
var MenuSchema = new Schema({
id: Number,
placeId: Number,
dishes: [{name: String, price: Number}] //add any other dish related stuff here, like spiceness, app, entree, desert chef special etc etc
});
现在,您可以为一个地方提供多个菜单,并在菜单中设置多个菜肴。 您甚至可以在菜单中执行一系列地点ID,如果餐馆的菜单相同,可能会出现这种情况。
var MenuSchema = new Schema({
id: Number,
placesId: [Number],
dishes: [{name: String, price: Number}] //add any other dish related stuff here, like spiceness, chef special etc etc
});
针对默认饮品进行了更新 这是一个带饮料的更新菜单架构 var MenuSchema = new mongoose.Schema({ 身份证号码, placeId:数字, 菜肴:[{name:String,price:Number}],//在这里添加任何其他菜相关的东西,如spiceness,app,entree,沙漠厨师特等等
drinks:[{
name: String,
price: Number
}]
});
就像我在评论中所说的那样,mongoose对数组没有任何默认值。 但是我们可以编写一个预保存挂钩来处理这个问题。
MenuSchema.pre("save", function (next) {
if (!this.drinks.length) {
this.drinks.push({name: "No Drinks", price: 0}); //null or 0 whichever you pefer
}
next();
});
如上所述,这将默认为默认对象。
P.S。这种默认饮料“没有饮料”虽然感觉不对。也许保持它为一个空数组,当我们需要在代码中使用它,显示或只是检查长度。
if (!menu.drinks.length) {
console.log("No drinks");
}