javascript - 无法编辑由其他用户在 Firestore 中创建的文档 (Vue.js/Firestore)

标签 javascript firebase vue.js google-cloud-firestore

在此先感谢您的帮助,这让我发疯了!

我遵循 firestore 数据模型,用户可以在其中创建自己的文档,这些文档附加到他们的用户 ID,以确保用户只能创建和查看他们创建的请求。但是,我有一个管理员需要访问和编辑这些用户提交的请求。

到目前为止,我已经能够通过 collectionGroup('subcollection') 访问子集合。尽管它确实会返回文档,但如果我尝试更新或删除其中的任何一个(除了我自己创建为管理员的文档),它会返回一个未捕获( promise )FirebaseError:没有要更新的文档 错误。

HTML:

<!-- Add New Request -->
<input
  type="submit"
  @click="addRequest"
  value="Save and Add"  
/>

<!-- Update Past Request -->
<button
  @click="updateRequest()"
  type="button"
  v-if="modal == 'edit'"
  >Update
</button>

<!-- Delete Past Request -->
<button
  @click="deleteRequest(request)"
  type="button"
  v-if="modal == 'edit'"
  >Delete
</button>

<!-- Set return objects -->
data() {
  return {
      requests: [],
      request: {
        //Standard
        req_assigned: null,
        req_contact: null,
        req_status: null,
        timestamp: null
      },
  }
}

<!-- Firestore Assign -->
firestore() {
  const user = fb.auth().currentUser;

  return {
    requests: db.collection("uzers").doc(user.uid).collection("requestz"),
    uzers: db.collection("uzers").doc(user.uid),
    bulksettings: db.collection("bulksettingz")
  };
},

JavaScript:

// Add New Request 
addRequest() {
  this.$firestore.requests.add(this.request);
}

// Update Past Request
updateRequest() {
  this.$firestore.requests.doc(this.request.id).update(this.request);
},

// Delete Past Request
deleteProduct(doc) {
  this.$firestore.requests.doc(doc.id).delete();
},

错误:

index.cjs.js?e89a:350 Uncaught (in promise) FirebaseError: No document to update: projects/vue-shop-276c4/databases/(default)/documents/uzers/k0yZFhDbldVpf6FhhPMcykK5GJD3/requestz/9ET8nk53MxBx3JlhZqKx
    at new FirestoreError (webpack-internal:///./node_modules/@firebase/firestore/dist/index.cjs.js:350:28)

所以,再次回顾一下,我正在尝试编辑和删除其他用户添加的请求。这已经困扰了我很长一段时间了。非常感谢任何能为我指明正确方向的人。

最佳答案

您需要创建一组 firebase 规则来控制对文档的访问,文档中有一个示例。

https://firebase.google.com/docs/firestore/solutions/role-based-access?authuser=0

关于javascript - 无法编辑由其他用户在 Firestore 中创建的文档 (Vue.js/Firestore),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59448376/

相关文章:

javascript - 在我的手机上本地存储 vimeo 视频(Phonegap Build APP)

arrays - 图形点在 viewDidLoad 之外不起作用

android - 如何从 Firestore 云数据库读取文档中的 ArrayLists?

javascript - Vue Router 默认子路由最初未加载

javascript - Vuetify 中的颜色主题更改不起作用

javascript - 将参数传递给解析函数

javascript - Kotlin 转换为 Javascript 错误 : "subtract is not a function"

javascript - 当代码使用背景颜色时无法更改位置

ios - 使用 UpdateChildValues 从 Firebase 中删除

javascript - v-select 绑定(bind)值到对象