You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中将Cloud Firestore字段值赋值给新变量?

解决Firestore文档字段赋值给lat和long变量的问题

嘿,我来帮你把Firestore文档里的字段值传递给你定义的lat和long变量!

首先看你现在的代码,已经成功获取到了文档数据,但只是打印出来了,还没把值赋给lat和long。而且要注意,Firestore的get()方法是异步操作,所以赋值必须放在then的回调函数里面,不然会因为异步执行顺序的问题,导致你在回调外访问lat和long时拿到的还是undefined。

修改后的代码(基于你原有的Promise写法)

var lat; 
var long; 
var cityRef = db.collection('UsersCurrentBookings').doc('3Xg6ujHMINeElzdOD3JypcZBMHw2'); 

var getDoc = cityRef.get()
  .then(doc => {
    if (!doc.exists) {
      console.log('No such document!');
    } else {
      console.log('Document data:', doc.data());
      // 这里替换成你Firestore文档里实际的纬度、经度字段名
      // 比如文档里字段叫latitude和longitude,就这么写:
      lat = doc.data().latitude;
      long = doc.data().longitude;
      // 如果字段名就是lat和long,直接用doc.data().lat和doc.data().long即可
      console.log('赋值完成:lat =', lat, ',long =', long);
      // 所有依赖lat和long的操作都要放在这里面,比如调用地图API之类的
    }
  })
  .catch(err => {
    console.log('Error getting document', err);
  });

更易读的async/await写法

如果你觉得Promise的链式写法有点绕,可以用async/await来处理异步,代码会更像同步逻辑:

async function fetchLocationData() {
  var lat; 
  var long; 
  var cityRef = db.collection('UsersCurrentBookings').doc('3Xg6ujHMINeElzdOD3JypcZBMHw2'); 

  try {
    const doc = await cityRef.get();
    if (!doc.exists) {
      console.log('No such document!');
    } else {
      console.log('Document data:', doc.data());
      lat = doc.data().latitude;
      long = doc.data().longitude;
      console.log('赋值完成:lat =', lat, ',long =', long);
      // 在这里执行所有需要用到lat和long的代码
    }
  } catch (err) {
    console.log('Error getting document', err);
  }
}

// 记得调用这个异步函数
fetchLocationData();

关键注意点

  • 字段名要匹配:一定要确认你Firestore文档里存储纬度和经度的字段名和代码里写的一致,比如文档里是lat就用doc.data().lat,是lng就用doc.data().lng,不然会得到undefined。
  • 异步执行顺序:所有需要使用lat和long的代码都必须放在then回调或者async函数的await之后,否则会因为异步还没完成,变量还没被赋值就使用,导致结果不符合预期。

内容的提问来源于stack exchange,提问作者PvDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:28:25