我有这个脚本,它从firebase遍历实时数据库中的所有子项:
methods: {
submit: function() {
const gebruikersref = firebase.database().ref('Gebruikers/')
var self = this
gebruikersref.once('value', function(snapshot) {
const lid = self.lidnummer;
const voornaam = self.voornaam;
const achternaam = self.achternaam;
const email = self.email;
snapshot.forEach(function(childSnapshot) {
const data = childSnapshot.val()
});
if(lid == data.Lidnummer) {
console.log('err')
} else {
gebruikersref.push({
Voornaam: voornaam,
Achternaam: achternaam,
Email: email,
Lidnummer: lid
});
}
});
}
}
但是我如何才能const data = childSnapshot.val()
脱离foreach循环,所以我可以在这里使用它:
if(lid == data.Lidnummer) {
console.log('err')
} else {
gebruikersref.push({
Voornaam: voornaam,
Achternaam: achternaam,
Email: email,
Lidnummer: lid
});
}
否则,else方法将运行x倍子代数,并将我的数据(只能被推送一次)推入x倍子代数
如果我正确理解你的问题,由于异步push()
方法返回ThenableReference
,你可以使用Promise.all()
以下方法:
submit: function() {
const gebruikersref = firebase.database().ref('Gebruikers/')
var self = this
gebruikersref.once('value', function(snapshot) {
const lid = self.lidnummer;
const voornaam = self.voornaam;
const achternaam = self.achternaam;
const email = self.email;
const promises = [];
snapshot.forEach(function(childSnapshot) {
const data = childSnapshot.val()
if (lid == data.Lidnummer) {
console.log('err')
} else {
promises.push(gebruikersref.push({
Voornaam: voornaam,
Achternaam: achternaam,
Email: email,
Lidnummer: lid
})
);
}
});
Promise.all(promises);
});
}
很抱歉@Renaud Tarnec的最新答案,但这是答案,非常感谢!:)