使用密钥更新的firebase数据为什么要插入新对象

时间:2016-07-15 08:17:05

标签: javascript firebase firebase-realtime-database

image

在图像中,红色突出显示的红色框显示键 - 由firebase生成

我想要做的是通过餐厅钥匙和同一项目向餐馆中的菜单项添加到globalMenu。

因此,添加的菜单项将在globalMenu中以及restaurant中的副本。

firebase通过复制餐厅密钥而不是将itemName添加到restaurant中来在数据库中添加新实体。

请帮我解决建模数据库。

**这是我的代码**

//1. Add menu items to the globalMenu and to restaurant, and the restaurantId of the restaurant adding menu.
this.writeNewMenuItem = function(itemName, restaurantId) {
    // A post entry.
    var menuItem = {
        itemName: [itemName]
    };

    // Get a key for a new Post.
    var newItemKey = firebase.database().ref().child('globalMenu').push().key;

    // Write the new item's data simultaneously in the globalMenu list and the restaurants's menu list.
    var updates = {}, updatesRestaurant = {};
    updates['/globalMenu/' + newItemKey] = menuItem;
    updatesRestaurant['/restaurants/' + restaurantId + '/' + newItemKey] = menuItem;

    firebase.database().ref().update(updatesRestaurant);
    return firebase.database().ref().update(updates);
}
//End

1 个答案:

答案 0 :(得分:1)

试试这个:

//1. Add menu items to the globalMenu and to restaurant, and the restaurantId of the restaurant adding menu.
this.writeNewMenuItem = function(itemName, restaurantId) {
    // A post entry.
    var menuItem = {
        itemName: [itemName]
    };

    var ref = firebase.database().ref();

    // Get a key for a new Post.
    var newItem = ref
      .child('globalMenu')
      .push(menuItem);

    ref
      .child('restaurants')
      .child(restaurantId)
      .child(newItem.key)
      .update(menuItem);

}