为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Firestore中正确使用arrayUnion?

如何在Firestore中正确使用arrayUnion?

阿波罗的战车 2022-12-22 10:01:02
我正在尝试使用 Node.js Firebase Admin SDK 将新的 javascript 对象添加到 Firestore 集合中的数组字段。我确定我要定位的文档有问题的字段,但我不断收到错误:TypeError:Cannot read property 'arrayUnion' of undefined我知道这个问题,但修复没有帮助。非常感激任何的帮助。有问题的路线:router.post("/create-new-user-group", async (req, res) => {  try {    const { userId, usersName, groupName } = req.body;    if (!userId || !usersName || !groupName) return res.status(422).send();    const groupRef = await db.collection("groups").doc();    const group = await groupRef.set({      id: groupRef.id,      name: groupName,      userId,      members: [{ id: userId, name: usersName, isAdmin: true }],    });        const response = await db    .collection("users")    .doc(userId)    .update({      groups: fbApp.firestore.FieldValue.arrayUnion({        id: userId,        name: userName,      }),    });    res.send(group);  } catch (error) {    console.log("error creating new group:", error);    res.status(400).send(error);  }});firebaseInit.js:const admin = require("firebase-admin");const serviceAccount = require("../serviceAccount.json");const firebaseApp = admin.initializeApp({  credential: admin.credential.cert(serviceAccount),  databaseURL: "https://xxx-xxxxx.firebaseio.com",});exports.fbApp = firebaseApp;
查看完整描述

1 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

错误告诉你这fbApp.firestore.FieldValue是未定义的。因此,它没有任何可供您调用的属性或方法。


如果要使用FieldValue,则必须通过firebase-admin命名空间导入引用它,而不是通过初始化的应用程序实例。


const admin = require("firebase-admin");

const FieldValue = admin.firestore.FieldValue;


// now you can write FieldValue.arrayUnion(...)


查看完整回答
反对 回复 2022-12-22
  • 1 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信