我需要你的帮助...
我无法(通过Vue应用程序)将带有地理数据的对象保存到我的Firestore中。
没有Geopoint的对象将保存到Firestore,但是当我尝试添加带有GeoPoint类的文档时,会出现以下错误:
Uncaught TypeError: this.$db.GeoPoint is not a constructor
at VueComponent.addProperty (index.2ad219460d4ddfd5635c.hot-update.js:226)
at click (index.3901b064c6620cd7292b.hot-update.js:149)
at invoker (commons.app.js:10574)
at HTMLButtonElement.fn._withTask.fn._withTask [...]
'This。$ db'是对firebase.firestore()对象的引用->由于它在没有GeoPoints的情况下可以正常工作,因此此导入/注入应该是正确的(我也尝试了将Firebase-instance直接导入而没有成功
我的功能如下:
this.$db.collection("property").add({
meta_data:this.meta_data,
address: this.address,
location: new this.$db.GeoPoint(8.241, 46.838)
})
.then(function(docRef) {
console.log("Document written with ID: ", docRef.id);
})
.catch(function(error) {
console.error("Error adding document: ", error);
});
我的依赖项:
"dependencies": {
"@mapbox/mapbox-gl-geocoder": "^2.3.0",
"@mapbox/mapbox-sdk": "^0.4.1",
"firebase": "^5.5.3",
"geojson": "^0.5.0",
"gsap": "^2.0.2",
"mapbox-gl": "^0.49.0",
"nuxt": "^2.1.0",
"vuefire": "^1.4.5",
"vuetify": "^1.2.9"
},
我想念什么吗?任何帮助表示赞赏!非常感谢
答案 0 :(得分:2)
我找到了问题的根本原因。 $ db是对firebase.firestore()的引用,而不是firebase.firestore的引用->因此,构造函数不可用。
答案 1 :(得分:0)
我有一个不太好的解决方案。我记得 firebase 模块并使用原始功能。就在我自己的组件中。
<script>
import firebase from 'firebase/app'
import 'firebase/storage'
export default {
beforeMount() {
const geopoint = firebase.firestore
console.log(new geopoint.GeoPoint(-0.180653, -78.467834))
},
}
</script>
答案 2 :(得分:0)
我在我的 vue 应用程序中有同样的错误,我在创建地理点时引用了外部 firebase 文件,我的解决方案是添加:
import { firebase } from '@firebase/app';