将 Firestore 依赖项和类型导入 node.js

Posted

技术标签:

【中文标题】将 Firestore 依赖项和类型导入 node.js【英文标题】:Import Firestore dependencies and types to node.js 【发布时间】:2018-04-15 03:41:01 【问题描述】:

在今年的 FirebaseSummit 会谈之后,我最近将我的云函数更新为 TypeScript。

我所有的代码看起来都很酷,但是我在尝试恢复 Firestore API 的类型时遇到了一些问题,例如 QuerySnapshotDocumentReference...

async function getEventsMadeByUser(userId: string): Promise<FirebaseFirestore.DocumentSnapshot[]> 
    const eventsMadeByUserQuery = await instance.collection('PrivateUserData')
        .doc(userId).collection(EVENTS)
        .where('interactionUser', '==', userId).get();
    return eventsMadeByUserQuery.docs;

现在我的 IDE (WebStorm) 没有得到 FirebaseFirestore 的类型。这就是我的package.json 的样子:


  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "dependencies": 
    "firebase-admin": "^5.4.3",
    "firebase-functions": "^0.7.2"
  ,
  "devDependencies": 
    "@types/express": "^4.0.37",
    "typescript": "^2.3.2"
  ,
  "scripts": 
    "build": "tsc",
    "watch": "tsc --watch",
    "deploy": "tsc && firebase deploy --only functions"
  ,
  "main": "build/index.js",
  "private": true

我已经尝试添加@firebase-firestore,但什么也没有,它不起作用。实现这一目标的正确依赖是什么?

【问题讨论】:

这不是 Firebase Firestore。这也是3年前的东西。 Firestore 是一个月前发布的。 你的导入语句是什么样的? 【参考方案1】:

我终于明白了! firebase-admin 模块只是一个简单的包装器,它为您初始化 Firestore。要获得真正的 Firestore,请将 "@google-cloud/firestore": "^0.9.0" 添加到您的 package.json。你可以在这里欣赏那些漂亮的类型:https://github.com/googleapis/nodejs-firestore/blob/master/types/firestore.d.ts。

【讨论】:

使用import Firestore from "@google-cloud/firestore"; 获取类型定义。【参考方案2】:
import  DocumentData  from '@firebase/firestore-types'

【讨论】:

以上是关于将 Firestore 依赖项和类型导入 node.js的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从firebase云函数node.js更新firestore中的map类型字段?

JNA:本机库依赖项和JAR提取

Flutter 插件开发:导入库

尝试将谷歌云功能与 node.js 一起使用时,admin.firestore 不是一个功能

无法从 Firestore 值解码类型

如何将数据从 Cloud Firestore 导入到本地模拟器?