我正在尝试使用firebase.remove()从Firebase删除记录,如下所示:

// inside deleteGame function
const promiseDeleteGame = firebase.child(`games/${game.id}`).remove();
return Observable.from(promise)
  .mapTo(deleteGameDone(game))
  .catch(error => Observable.of(deleteGameFailure(error)));


我的rules.bolt文件配置如下:

isOwner(gameId) { auth.uid == root.games[gameId].ownerId }

path games/{gameId} is Game {
  read() { true }
  create() { true }
  update() { true }
  delete() { isOwner(gameId) }
}


我总是收到错误:set at /games/{gameId} failed: permission_denied.

是我无法删除记录的问题,因为我要删除的给定记录包含属性ownerId,该属性应授予我删除记录的权限?

或者,也许是因为Game对象具有一个名为registrations的属性,该属性是userId及其信息的映射,而我没有权限更新registrations属性?

最佳答案

我是Firebase Bolt的新手。
我建议您使用以下语法。

delete() { auth != null && auth.uid == prior(this).ownerId }

10-07 21:02