Firestore上的增量值,Vue App上具有FieldValue

问题描述 投票:0回答:1

我当前正在尝试通过1.将Firestore数据库上的文档中的值更新。搜索了一段时间后,我发现有关FieldValue.increment(1)。我的目标是拥有一个包含2个字段(主持人/侦察兵)的表单,我将在这些字段上输入需要增加其主持人或侦察员值的人员的姓名。这就是我的Vue组件的外观]

<template>
  <div class="add-wave">
    <h3>Add Wave</h3>
    <div class="row">
      <form @click.prevent="addwave()" class="col s12">
        <div class="row">
          <div class="input-field col s12">
            <input type="text" v-model="host" />
            <label class="active">Host</label>
          </div>
        </div>
        <div class="row">
          <div class="input-field col s12">
            <input type="text" v-model="scout" />
            <label class="active">Scout</label>
          </div>
        </div>
        <button type="submit" class="btn">Submit</button>
        <router-link to="/member" class="btn grey">Cancel</router-link>
      </form>
    </div>
  </div>
</template>

<script>
import db from "../data/firebaseInit";
export default {
  data() {
    return {
      host: null,
      scout: null
    };
  },
  methods: {
    addwave() {
      db.collection("members")
        .where("name", "==", this.$route.params.host)
        .get()
        .then(querySnapshot => {
          querySnapshot.forEach(doc => {
            doc.ref
              .update({
                host: db.FieldValue.increment(1)
              })
              .then(() => {
                this.$router.push({
                  name: "member",
                  params: { name: this.name }
                });
              });
          });
        });
    }
  }
};
</script>

一切都会编译,但是每当我尝试在每个输入字段输入名称时,都会收到错误消息“ FirebaseError:” Function Query.where()需要有效的第三个参数,但未定义。“

我不知道为什么会收到此错误或如何解决。谁能指出我正确的方向?

javascript firebase vue.js google-cloud-firestore
1个回答
0
投票

目前的代码至少有两个问题:

  • [this.$route.params.host应该应该是this.host,因为这是Vue绑定主机参数的位置。

  • 假设从db创建了firebase.firestore(),这不是为FieldValue功能引用increment的有效方法。您需要直接将其获取为firebase.firestore.FieldValue

© www.soinside.com 2019 - 2024. All rights reserved.