Vue.js Firestore保存地理位置

时间:2018-09-04 08:59:39

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

有!我对Vue.js和JavaScript完全陌生。我正在遵循一些youtube指南来了解其工作原理,但是当我无法将GeoPoint添加到Firestore数据库时,我就遇到了问题。

这就是我所拥有的:

firebaseInit.js

import firebase from 'firebase'
import 'firebase-admin'
import firebaseConfig from './firebaseConfig'
import { scrypt } from 'crypto';
const firebaseApp = firebase.initializeApp(firebaseConfig)
export default firebaseApp.firestore()

script在相关.vue文件中:

<script>
import db from "./firebaseInit";
 ...
 greet: function(event) {
  db.collection("events_test").add({
    name: this.name,
    ...
    location: new admin.firestore.GeoPoint(51.435454, 31.445456),
    phone: this.phone
    },
    originalUrl: this.originalUrl,
    createdAt: new Date(),
    updatedAt: new Date()
  })
  .then(docRef =>{
      alert(docRef.id)
  })
  .catch(error => {
       alert(error)
  });
  <script>

new admin.firestore.GeoPoint(51.435454, 31.445456)此初始化对我不起作用。以及new GeoPoint(lat,lng)firebase.firestore.GeoPoint(lat,lng)。我总是得到ReferenceError中没有定义的Vue.Component。请帮忙。

1 个答案:

答案 0 :(得分:1)

通过执行import 'firebase-admin'location: new admin.firestore.GeoPoint(51.435454, 31.445456),,您正在尝试在JavaScript / Web应用程序(由Vue.js构建)中使用Admin SDK。

这不是Admin SDK的目标,即“让您在特权环境中与Firebase 进行交互”,即通常由您完全控制的服务器。有关更多详细信息,请参见文档:https://firebase.google.com/docs/admin/setuphttps://firebase.google.com/docs/reference/admin/

在这种情况下,您应该使用“标准” JavaScript SDK通过以下操作来创建GeoPoint(请参见https://firebase.google.com/docs/reference/js/firebase.firestore.GeoPoint):

<script>
import firebase from 'firebase/app'
import db from "./firebaseInit";
 ...
 greet: function(event) {
  db.collection("events_test").add({
    name: this.name,
    ...
    location: new firebase.firestore.GeoPoint(51.435454, 31.445456),
    phone: this.phone
    }
  ....

请注意,您需要在组件中导入firebase/app


请注意,

中似乎还有一个额外的{
phone: this.phone
},
originalUrl: this.originalUrl,