添加 Firestore 文档 returns "Timestamp is not a constructor"
Adding firestore document returns "Timestamp is not a constructor"
我正在尝试从我的 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)
但是我不明白为什么不能直接从数据库对象调用Timestamp?
您当前的代码归结为:
new firebase.firestore().Timestamp(42, 0)
如果您查看 Timestamp
class 的文档,该类型未在 firestore
实例上定义,而是在其静态命名空间上定义。
要创建新的 Timestamp
,您需要:
new firebase.firestore.Timestamp(42, 0)
所以您的解决方法实际上是正确的解决方案:)
我正在尝试从我的 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)
但是我不明白为什么不能直接从数据库对象调用Timestamp?
您当前的代码归结为:
new firebase.firestore().Timestamp(42, 0)
如果您查看 Timestamp
class 的文档,该类型未在 firestore
实例上定义,而是在其静态命名空间上定义。
要创建新的 Timestamp
,您需要:
new firebase.firestore.Timestamp(42, 0)
所以您的解决方法实际上是正确的解决方案:)