gpt4 book ai didi

node.js - 为什么我的 firebase 回调会被多次触发?

转载 作者:搜寻专家 更新时间:2023-11-01 00:43:02 25 4
gpt4 key购买 nike

我有一个小型 Node 服务器监听 firebase 的变化并在特定条件下发送电子邮件。这是代码:

var Firebase = require('firebase'); 
var ref = new Firebase(process.env.FIREBASE_URL);
ref.authWithCustomToken(process.env.FIREBASE_SECRET, function (err) {
if (err) {
console.log(new Date().toString(), 'Firebase Authentication Failed!', err);
EmailService.send('Firebase authentication failed', 'errors@domain.com', err);
} else {
ref.child('applicants').on('child_added', function (snapshot) {
var applicant = snapshot.val();
if (!(applicant.alerts && applicant.alerts.apply)) {
console.log(new Date().toString(), 'New Applicant: ', applicant);
var body = applicant.firstName + ' ' + applicant.lastName + '\n' + applicant.email + '\n' + applicant.phoneNumber;
EmailService
.send('New Applicant', 'applicants@entercastle.com', body)
.then(function () {
ref.child('applicants').child(snapshot.key()).child('alerts').child('apply').set(true);
})
.catch(function (err) { console.log(new Date().toString(), err); });
}
});
}
});

但是,我不断收到重复的电子邮件。最奇怪的是,尽管发送了多封电子邮件,但日志只为每个申请人显示一个“新申请人:...”声明。

知道是什么原因造成的或如何解决吗?

谢谢!

最佳答案

在添加新的监听器之前删除现有的监听器将解决此问题

on() 事件之前尝试这个 off() 事件

ref.child('applicants').off(); // it will remove existing listener

然后是你的代码

ref.child('applicants').on('child_added', function(snapshot) {
var applicant = snapshot.val();
if (!(applicant.alerts && applicant.alerts.apply)) {
console.log(new Date().toString(), 'New Applicant: ', applicant);
var body = applicant.firstName + ' ' + applicant.lastName + '\n' + applicant.email + '\n' + applicant.phoneNumber;
EmailService
.send('New Applicant', 'applicants@entercastle.com', body)
.then(function() {
ref.child('applicants').child(snapshot.key()).child('alerts').child('apply').set(true);
})
.catch(function(err) {
console.log(new Date().toString(), err);
});
}
});

关于node.js - 为什么我的 firebase 回调会被多次触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28160760/

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