Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 如何在Vue.js中获取新创建的Firestore文档的ID?_Firebase_Vue.js_Google Cloud Firestore - Fatal编程技术网

Firebase 如何在Vue.js中获取新创建的Firestore文档的ID?

Firebase 如何在Vue.js中获取新创建的Firestore文档的ID?,firebase,vue.js,google-cloud-firestore,Firebase,Vue.js,Google Cloud Firestore,使用Vue.js和Firebase,我正在构建我能想到的最简单的CRUD 当我从表单“创建”数据时,我可以将其发送到数据库,但当我尝试更新本地对象数组时,没有文档id,因为这是由firebase在创建新文档时创建的。那么,如何在不必从数据库获取所有数据的情况下检索新文档id呢 这一定有一个模式。我唯一能想到的就是再次从数据库中获取数据。但是有更简单的方法吗 是否有方法将id传递回新创建文档的组件 这是我的组件,只有必要的位 <template lang="html"> <d

使用Vue.js和Firebase,我正在构建我能想到的最简单的CRUD

当我从表单“创建”数据时,我可以将其发送到数据库,但当我尝试更新本地对象数组时,没有文档id,因为这是由firebase在创建新文档时创建的。那么,如何在不必从数据库获取所有数据的情况下检索新文档id呢

这一定有一个模式。我唯一能想到的就是再次从数据库中获取数据。但是有更简单的方法吗

是否有方法将id传递回新创建文档的组件

这是我的组件,只有必要的位

<template lang="html">
  <div class="crud">
    <h1>I am the crud component</h1>
    <div v-for="item in peoples" :key="peoples.id" class="peoples">
      <h3>name: {{ item.name}} age: {{ item.age}} id: {{ item.id }} <button @click="deletePeople(item.id)">delete</button> </h3>
    </div>
    <form @submit.prevent="addPerson()">
      <div>
        <label for="name">Name:</label>
        <input type="text" name="name" v-model="name">
      </div>
      <div>
        <label for="age">Age:</label>
        <input type="number" name="age" v-model="age">
      </div>
      <div>
        <button>add person to database</button>
      </div>
   </form>
  </div>
</template>

<script>
import db from '@/firebase/init'

export default {
  name: 'Crud',
  data(){
    return {
      msg: 'hello all',
      peoples: [],
      name: null,
      age: null
    }
  },
  methods:{
    addPerson(){
      console.log('addPerson() method running');
      console.log('person: ' + this.name);
      db.collection('people').add({
        name: this.name,
        age: this.age
      }).then(() => {

        db.collection('people').get().then(snapshot => {
          this.peoples = []
          snapshot.forEach(doc => {
            // console.log(doc.data(), doc.id);
            let people = doc.data()
            people.id = doc.id
            this.peoples.push(people)
          })
        })

        // console.log('push to local data');
        // this.peoples.push({ name: this.name, age: this.age})
      })
    },

我是积垢成分
名称:{{item.name}年龄:{{item.age}}id:{{item.id}}删除
姓名:
年龄:
将人员添加到数据库
从“@/firebase/init”导入数据库
导出默认值{
名称:“积垢”,
数据(){
返回{
msg:'大家好',
人民:[],
名称:空,
年龄:零
}
},
方法:{
addPerson(){
log('addPerson()方法正在运行');
console.log('person:'+this.name);
db.collection('people')。添加({
姓名:this.name,
年龄:这个年龄
}).然后(()=>{
db.collection('people').get().then(快照=>{
this.peoples=[]
snapshot.forEach(doc=>{
//console.log(doc.data(),doc.id);
让people=doc.data()
people.id=doc.id
这个。人。推(人)
})
})
//log(“推送到本地数据”);
//this.peoples.push({name:this.name,age:this.age})
})
},
任何帮助都将不胜感激

谢谢

在这里,您可以在
.then()
中简单地说
this.lastID=docRef.id
,然后用id
lastID
读取文档

// Add a new document with a generated id.
db.collection("cities").add({
    name: "Tokyo",
    country: "Japan"
})
.then(function(docRef) {
    console.log("Document written with ID: ", docRef.id);
})
.catch(function(error) {
    console.error("Error adding document: ", error);
});