Firebase Admin中arrayUnion是否支持及使用方法咨询
问题
Firebase客户端提供了array-union方法,我希望在firebase-admin服务端环境中使用arrayUnion(无需遵循常规Firebase客户端权限规则),但发现firebase-admin中没有对应的导入项。若尝试在admin的doc.update中使用客户端的arrayUnion辅助方法,虽能通过类型检查,但会出现运行时错误,提示对象不被识别为更新值,该错误与Stack Overflow上的相关报错类似。我怀疑firebase-admin不支持arrayUnion,请问该判断是否正确?若支持,应如何使用?
回答
你的判断错误,firebase-admin完全支持arrayUnion,只是它的导入和使用方式与客户端SDK不同。
在firebase-admin中,你需要从firebase-admin/firestore路径导入FieldValue,然后调用其arrayUnion方法,示例代码如下:
JavaScript 示例
const admin = require('firebase-admin'); const { FieldValue } = require('firebase-admin/firestore'); // 初始化Admin SDK(未初始化时执行) if (!admin.apps.length) { admin.initializeApp(); } const db = admin.firestore(); // 使用arrayUnion更新数组字段 db.collection('目标集合名').doc('目标文档ID').update({ 目标数组字段名: FieldValue.arrayUnion('新增元素') });
TypeScript 示例
import * as admin from 'firebase-admin'; import { FieldValue } from 'firebase-admin/firestore'; // 初始化Admin SDK(未初始化时执行) if (!admin.apps.length) { admin.initializeApp(); } const db = admin.firestore(); // 使用arrayUnion更新数组字段 db.collection('目标集合名').doc('目标文档ID').update({ 目标数组字段名: FieldValue.arrayUnion('新增元素') });
需注意:绝对不能混用客户端SDK的arrayUnion与admin SDK的更新方法,二者内部实现和序列化逻辑不同,这正是你触发运行时错误的原因。必须使用admin SDK自身提供的FieldValue.arrayUnion方法。
内容的提问来源于stack exchange,提问作者Igor Loskutov
相关产品推荐
相关产品推荐

