Добавление документа firestore возвращает «Timestamp не является конструктором». - PullRequest
0 голосов
/ 20 июня 2020

Из моего приложения Quasar я пытаюсь вставить документ в коллекцию firestore. Он работает нормально, но когда я пытаюсь вставить документ с определенным типом поля c (например, отметкой времени), я получаю сообщение об ошибке

[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)

Но я не понимаю, почему Timestamp не может вызывать напрямую из объекта db?

1 Ответ

1 голос
/ 20 июня 2020

Ваш текущий код сводится к:

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

Если вы посмотрите в документации класса Timestamp , тип не определен в экземпляре firestore, но на его пространстве имен stati c.

Чтобы создать новый Timestamp, вам нужно:

new firebase.firestore.Timestamp(42, 0)

Так что ваш обходной путь на самом деле является правильным решением :)

...