gpt4 book ai didi

node.js - 如何在 Cloud Functions Firestore 中处理读取和写入

转载 作者:太空宇宙 更新时间:2023-11-03 22:45:42 29 4
gpt4 key购买 nike

我对如何重构我的代码以在没有嵌套 promise 的情况下进行读写感到有点困惑。在编写对象时,如果该对象设置了标志,我想用新计数更新其“相关”对象。我有两个问题。

1) 从读取到写入的嵌套 Promise。2)我应该返回什么

exports.updateRelationshipCounts = functions.firestore
.document('masterProduct/{nfCode}').onWrite((event) => {

//on writing of record:

var newProduct = event.data.data();
if (newProduct.isGlutenFreeYN === 'Y') {
console.log('Gluten Free');

//Update GF count in the Brand Object:

var db = admin.firestore();
var docRef = db.collection("masterBrand").doc(newProduct.brandNFCode);
var doc = docRef.get()
.then(doc => {

doc.glutenFreeCount = doc.glutenFreeCount + 1


docRef.set(newProduct.brand)
.then(function () {
console.log("Document successfully written!");
})
.catch(function (error) {
console.error("Error writing document: ", error);
});

})
.catch(err => {
console.log('Error getting document', err);
})
};

});

而且它希望我返回一些东西......零?

最佳答案

您可以使用链接并消除一些嵌套。

exports.updateRelationshipCounts = functions.firestore
.document('masterProduct/{nfCode}').onWrite((event) => {
//on writing of record:
var newProduct = event.data.data();
if (newProduct.isGlutenFreeYN === 'Y') {
console.log('Gluten Free');
//Update GF count in the Brand Object:

var db = admin.firestore();
var docRef = db.collection("masterBrand").doc(newProduct.brandNFCode);
docRef.get().then(doc => {
doc.glutenFreeCount = doc.glutenFreeCount + 1
return docRef.set(newProduct.brand);
}).then(() => {
console.log("document successfully written);
}).catch(err => {
// will log all errors in one place
console.log(err);
});
}
});

变化:

  1. 在顶层进行链接,而不是越来越深的嵌套。
  2. 返回嵌套的 Promise,以便它们正确链接。
  3. 将错误处理程序合并到一个 .catch()

关于node.js - 如何在 Cloud Functions Firestore 中处理读取和写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46821387/

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