【问题标题】:Adding firestore document returns "Timestamp is not a constructor"添加 firestore 文档返回“时间戳不是构造函数”
【发布时间】:2020-06-20 19:28:14
【问题描述】:

从我的 Quasar 应用程序中,我尝试将文档插入到 Firestore 集合中。它工作得很好,但是当我尝试插入具有特定字段类型(如时间戳)的文档时出现错误

[Vue warn]: Error in v-on handler: "TypeError: boot_firebase__WEBPACK_IMPORTED_MODULE_3__.db.Timestamp is not a constructor"

启动文件

import * as firebase from 'firebase/app'
import "firebase/firestore"

const config = {
    apiKey: "...",
    authDomain: "...",
    databaseURL: "...",
    projectId: "....",
    storageBucket: "...",
    messagingSenderId: "...",
    appId: "..."
}
let firebaseApp = firebase.initializeApp(config)
let db = firebaseApp.firestore()

export { firebaseApp, db }

Vue 组件

<template>
   <div>
       <q-card @click="do()">
       </q-card>
   </div>
</template>

<script>
import {firebaseApp, db} from 'boot/firebase'
export default {
  methods:{
    do(){
        db.collection("clt").add({
            dt: new db.Timestamp(42, 0) 
        })
    }
  }
</script>

目前我必须使用类似的职责解决方法

dt: new db.app.firebase_.firestore.Timestamp(42, 0)

但我不明白为什么不能直接从 db 对象调用 Timestamp?

【问题讨论】:

    标签: javascript vue.js google-cloud-firestore quasar-framework


    【解决方案1】:

    您当前的代码归结为:

    new firebase.firestore().Timestamp(42, 0)
    

    如果您查看Timestamp class 的文档,该类型不是在firestore 实例上定义的,而是在其静态命名空间上定义的。

    要创建一个新的Timestamp,您需要:

    new firebase.firestore.Timestamp(42, 0)
    

    所以你的解决方法实际上是正确的解决方案:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 2021-10-09
      • 2020-03-04
      • 1970-01-01
      相关资源
      最近更新 更多