gpt4 book ai didi

javascript - 如何在Firestore中正确使用arrayUnion?

转载 作者:行者123 更新时间:2023-12-02 19:19:07 29 4
gpt4 key购买 nike

我正在尝试使用 Node.js Firebase Admin SDK 将新的 javascript 对象添加到 Firestore 集合中的数组字段。

我确定我要定位的文档有问题的字段,但我不断收到错误:TypeError:

无法读取未定义的属性“arrayUnion”

我知道这个question但修复没有帮助。

如有任何帮助,我们将不胜感激。

有问题的路线:

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;

最佳答案

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

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

const admin = require("firebase-admin");
const FieldValue = admin.firestore.FieldValue;

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

关于javascript - 如何在Firestore中正确使用arrayUnion?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63287241/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com