Ich habe die App auf node.js mit der Verbindung zu Firebase. Ich muss die Daten korrekt aktualisieren.Die richtige Lösung für Versprechen
Wie man die Funktion getOrSetUserTrackDay (Tag) in einem Versprechen, um einen guten Wert zu erhalten, aber nicht undefiniert?
let userData = [];
let userID = req.params.userID;
let today = req.params.today;
let yesterday = req.params.yesterday;
db.collection('users').doc(userID).get()
.then((userDataFromDB) => {
if (!userDataFromDB.exists) {
res.status(404).send('User not found');
}
else {
function getOrSetUserTrackDay(day) {
let userTrackRef = db.collection('history').doc('daily').collection(day).doc(userID);
userTrackRef.get()
.then(userTrackData => {
if (userTrackData.exists) {
return userTrackData.data(); // good
}
else {
let userNewData = {
username: userDataFromDB.data().username,
photoUrl: userDataFromDB.data().photoUrl
};
userTrackRef.update(userNewData);
return userNewData; // good
}
})
}
userData = {
user: userDataFromDB.data(),
today: getOrSetUserTrackDay(today), // undefined
yesterday: getOrSetUserTrackDay(yesterday) // undefined
};
res.json(userData);
}
})
.catch((err) => {
console.log(err);
res.status(404).send(err);
});
gut 'getOrSetUserTrackDay' keine return-Anweisung hat, daher gibt es' undefined' - aber, da es asynchronen Code enthält, werden Sie nie es in der Lage sein zu verwenden synchron –