gpt4 book ai didi

javascript - 通过 Node js 将数据更新到 firebase 项目列表时检查更新结果

转载 作者:搜寻专家 更新时间:2023-10-31 23:44:45 24 4
gpt4 key购买 nike

我想通过 Node js 将一些数据添加到 firebase 中的项目列表中,但我不知道如何检查更新过程是否失败。这是我的工具:

// set data to json 
let servicesJson = {
"car_services": [services],
"car_services_status": 1
}
// add car service to province
let provinceIdNumber = parseInt(provinceId, 10);
var areaRef = db.ref("areas")
areaRef.orderByChild('province_id').equalTo(provinceIdNumber).once('value', function (areaSnapshots) {
if (areaSnapshots.val() != null) {
var result = true
areaSnapshots.forEach (function (child) {
let currentTime = new Date().toISOString();
servicesJson.last_updated = currentTime
child.ref.update(servicesJson, function (error) {
if (error) {
console.log("*** error ***")
result = false
} else {
console.log("*** success ***")
result = true
}
})
});
console.log("*** finished ***")
res.send({ 'success': result });
} else {
res.send({ 'success': false, 'error_code': 'CSTP05', 'error_msg': 'Cant find any area of province to update car service' });
}
});

这是日志:

*** finished ***
*** success ***
*** success ***
*** success ***
*** success ***

如何等到循环结束再返回结果?

最佳答案

使用Promise

// set data to json
let servicesJson = {
car_services: [services],
car_services_status: 1
};
// add car service to province
let provinceIdNumber = parseInt(provinceId, 10);
var areaRef = db.ref("areas");
const updatePromise = new Promise((resolve, reject) => {
const changedCount = 0;
areaRef
.orderByChild("province_id")
.equalTo(provinceIdNumber)
.once("value", function(areaSnapshots) {
if (areaSnapshots.val() != null) {
areaSnapshots.forEach(function(child) {
let currentTime = new Date().toISOString();
servicesJson.last_updated = currentTime;
child.ref.update(servicesJson, function(error) {
if (error) {
changedCount++;
console.log("*** error ***");
} else {
changedCount++;
console.log("*** success ***");
}
});

if (areaSnapshots.length === changedCount) {
console.log("*** finished ***");
resolve({ success: true });
}
});
} else {
reject({
success: false,
error_code: "CSTP05",
error_msg: "Cant find any area of province to update car service"
});
}
});
});

updatePromise
.then(data => {
res.send(data);
})
.catch(error => {
res.send(error);
});

关于javascript - 通过 Node js 将数据更新到 firebase 项目列表时检查更新结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51510413/

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