Node.js中使用Firebase serverTimestamp()时出现错误
解决Firebase serverTimestamp报错:Cannot read property 'serverTimestamp' of undefined
问题原因
你同时引入了firebase-admin和@google-cloud/firestore两个库,且混用了它们的API,导致找不到正确的FieldValue对象。
正确写法
方案1:统一使用firebase-admin库
如果基于firebase-admin操作Firestore,需先完成初始化,再调用对应API:
const Queue = require('firebase-queue'); const admin = require("firebase-admin"); // 初始化admin(必填步骤,之前可能遗漏) admin.initializeApp({ credential: admin.credential.applicationDefault(), // 也可根据项目需求指定具体配置 }); const firestore = admin.firestore(); job.ref.update({ timeProcessingEnded: admin.firestore.FieldValue.serverTimestamp() })
方案2:统一使用@google-cloud/firestore库
如果直接使用@google-cloud/firestore,直接解构调用FieldValue:
const Queue = require('firebase-queue'); const { Firestore, FieldValue } = require('@google-cloud/firestore'); const firestore = new Firestore(); job.ref.update({ timeProcessingEnded: FieldValue.serverTimestamp() })
关键注意事项
- 不要同时混用两个库的Firestore实例与API,选其一坚持使用
- 使用firebase-admin时,必须先执行
admin.initializeApp()完成初始化,否则API无法正常工作 - 调用
serverTimestamp()时,需确保从对应库的FieldValue对象获取,避免跨库调用
内容的提问来源于stack exchange,提问作者user567
相关产品推荐
相关产品推荐

