无法使用admin SDK获取Firestore文档

时间:2018-12-29 18:07:17

标签: javascript firebase google-cloud-functions

我有一些测试文件,试图使用admin sdk获取Firestore文档。我不断收到错误TypeError: admin.firestore(...).collection(...).doc(...).then is not a function

我正在本地服务/测试。我在做什么错了?

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp({
  credential: admin.credential.cert(functions.config().cert),
  databaseURL: functions.config().databaseURL
});

const getMessage = () => {
  return admin.firestore().collection('messages').doc('1DwcY72Jt4Wj9QuZ8TyR').then(res => console.log(res)).catch(err => {
    return err
  })
}

getMessage();

2 个答案:

答案 0 :(得分:1)

我认为您需要对想要的文档执行一些操作。尝试.get()

https://firebase.google.com/docs/firestore/query-data/get-data#get_a_document

所以对你来说

return admin
  .firestore()
  .collection('messages')
  .doc('1DwcY72Jt4Wj9QuZ8TyR')
  .get()
  .then(res => console.log(res)).catch(err => {

答案 1 :(得分:0)

您在这里有两件事错了。

您不能在Cloud Functions中运行任意代码或脚本。您需要声明一个函数,当项目中发生某些事情时将触发该函数。到目前为止,您尚未声明任何触发器。您是否要写HTTP triggerFirestore trigger?阅读文档并使用firebase-functions模块声明一个。

第二,您的代码实际上并未获取任何文档。您现在所拥有的只是一个DocumentReference,它指向一个文档:

admin.firestore().collection('messages').doc('1DwcY72Jt4Wj9QuZ8TyR')

至少,您需要对此调用get()才能实际获取文档,然后处理其返回的承诺。