firebase.firestore.GeoPoint(long,lat)不是构造函数

时间:2018-10-11 21:16:33

标签: firebase vue.js google-cloud-firestore nuxt.js

我需要你的帮助...

我无法(通过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"
},

我想念什么吗?任何帮助表示赞赏!非常感谢

3 个答案:

答案 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';