我正在做一個餐廳管理系統,在表格訂購部分,有一個帶有ID標籤的表格列表(例如T01,T02 ...),當我點擊桌子上的某個菜單時,會彈出一個菜單,菜單中可以點擊添加任何食物或減少它。MongoDB更新導致其他無法匹配的字段也被更新
問題
當我嘗試添加任何食物的量,同時訂貨許多表,其他表也了,我加入到當前的表數量。
如果Table1: {Fish : 3}, Table2: {Fish : 0}
,如果我添加魚數量1至表2,表1也可以由1
最終結果補充說:Table1: {Fish : 4}, Table2: {Fish : 1}
觸發
如果我訂購了表1,然後關閉模態並回到訂單部分訂購表2,表1將受到影響,如果我訂購N表,這將繼續,所有表格將受到影響
臨時解決方案
如果我訂購了表1,然後刷新瀏覽器,那麼爲了表2,然後,我命令並沒有得到上表影響由它
我使用流星1.4
代碼:
//Client
'click .js-order' : (e) => {
var tableId = e.currentTarget.id;
var findTableOrder = Order.findOne({table_id: tableId});
var orderList = {}
findTableOrder
? console.log("Order exist")
: Order.insert({table_id: tableId, order: orderList});
orderList = Order.findOne({table_id: tableId}).order
Session.set("quantityTrack", orderList);
$("#orderModal").modal("show");
$(".modal-title").text("Order for table: " + Tables.findOne({_id: tableId}).table_id);
$(".js-add-quantity").click((e) => { // Adding Event
var foodObjKey = ItemMeta.findOne({UID: e.currentTarget.id}).foodId;
if (orderList[foodObjKey] == null) {
orderList[foodObjKey] = 0;
}
orderList[foodObjKey] = orderList[foodObjKey] + 1;
Meteor.call("updateOrder", tableId, orderList, (err) => {
err
? console.log(err)
: console.log("Order Update Successful");
});
Session.set("quantityTrack", orderList);
}); // Adding event ends
}
//Server/methods
updateOrder : (tableid, orderlist) => {
Order.update({
table_id: tableid
}, {
$set: {
order: orderlist
}
});
});
如果我遺漏了任何東西,請告訴我,我會編輯帖子,並非常感謝。
'console.log(e.currentTarget.id)'調試並確保'table_id'對於每個表都是唯一的 –
@jonathan,是的,我已經在控制檯日誌中看到它,但是因爲我不想讓我的代碼在提問時顯得凌亂,所以我在這裏刪除它們。 table_id對於每個表都是唯一的,是的。 – ShadowLegend