我当前正在尝试通过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()需要有效的第三个参数,但未定义。“
我不知道为什么会收到此错误或如何解决。谁能指出我正确的方向?
目前的代码至少有两个问题:
[this.$route.params.host
应该应该是this.host
,因为这是Vue绑定主机参数的位置。
假设从db
创建了firebase.firestore()
,这不是为FieldValue
功能引用increment
的有效方法。您需要直接将其获取为firebase.firestore.FieldValue
。