【发布时间】:2017-09-13 00:53:16
【问题描述】:
我将 Cloud Functions for Firebase 与我的 Firebase 实时数据库一起使用,以便对我的应用进行一些数据管理。
我的一个功能似乎已终止,因为它需要大约 100-150 秒才能完成。这会发生错误:ESOCKETTIMEDOUT。
有没有办法防止这种情况发生?
这是我的功能:
function getTopCarsForUserWithPreferences(userId, genres) {
const pathToCars = admin.database().ref('cars');
pathTocars.orderByChild("IsTop").equalTo(true).once("value").then(function(snapshot) {
return writeSuggestedCars(userId, genres, snapshot);
}).catch(reason => {
console.log(reason)
})
}
function writeSuggestedCars(userId, genres, snapshot) {
const carsToWrite = {};
var snapCount = 0
snapshot.forEach(function(carSnapshot) {
snapCount += 1
const carDict = carSnapshot.val();
const carGenres = carDict.taCarGenre;
const genre_one = genres[0];
const genre_two = genres[1];
if (carGenres[genre_one] === true ||carGenres[genre_two] == true) {
carsToWrite[carSnapshot.key] = carDict
}
if (snapshot.numChildren() - 1 == snapCount) {
const pathToSuggest = admin.database().ref('carsSuggested').child(userId);
pathToSuggest.set(carsToWrite).then(snap => {
}).catch(reason => {
console.log(reason)
});
}
});
}
getTopCarsForUserWithPreferences 在用户添加首选项时被调用。 cars 表也有大约 50k 个条目。
【问题讨论】:
标签: node.js firebase firebase-realtime-database google-cloud-functions