Node.js 如何在nodeJS中显示firebase数据库中的数据
我想在邮件中发送用户名,但每次都会发送该用户名的URL,而不是用户名。这是我的密码Node.js 如何在nodeJS中显示firebase数据库中的数据,node.js,firebase,firebase-realtime-database,google-cloud-functions,nodes,Node.js,Firebase,Firebase Realtime Database,Google Cloud Functions,Nodes,我想在邮件中发送用户名,但每次都会发送该用户名的URL,而不是用户名。这是我的密码 exports.onUserCreated = functions.database.ref('/user/{pushId}/email') .onCreate((snapshot, context ) => { // Do something when a new user is created var email = snapshot.val(); var
exports.onUserCreated = functions.database.ref('/user/{pushId}/email')
.onCreate((snapshot, context ) => {
// Do something when a new user is created
var email = snapshot.val();
var name = snapshot.ref.parent.child('name');
return sendWelcomeEmaill(email, name);
});
function sendWelcomeEmaill(email, name){
const mailOptions = {
from : `${APP_NAME} <noreply@firebase.com>`,
to: email,
};
mailOptions.subject = `Welcome to ${APP_NAME}!`;
mailOptions.text = `Hey ${name || ''}! Welcome to ${APP_NAME}. \n\n We hope you will enjoy our service.`;
return mailTransport.sendMail(mailOptions).then(() => {
return console.log('New welcome email sent to:', email);
});
}
输出应该是文本,而不是用户名的url
数据库应该是这样的
user
-h(random pushID)
|---email: "yostar18888@gmail.com"
|---name : "manik"
通过做
var name = snapshot.ref.parent.child('name');
实际上,您为变量name
分配了一个变量,因为该方法返回一个引用
因此,您需要通过执行以下操作来查询此引用处的值
exports.onUserCreated = functions.database.ref('/user/{pushId}/email')
.onCreate((snapshot, context ) => {
// Do something when a new user is created
var email = snapshot.val();
var nameRef = snapshot.ref.parent.child('name'); //Note that variable name was changed to nameRef, to be more meaningful
return nameRef.once('value')
.then(function(dataSnapshot) {
return sendWelcomeEmaill(email, dataSnapshot.val());
});
});
如果您同时设置用户的姓名和电子邮件,则在
用户
节点的级别而不是电子邮件
节点的级别触发云功能可能会更容易,如:
exports.onUserCreated = functions.database.ref('/user/{pushId}')
.onCreate((snapshot, context ) => {
// Do something when a new user is created
var email = snapshot.val().email;
var name = snapshot.val().name;
......
如果看不到数据库中的内容,就不可能说出哪里出了问题。您在这里处理的所有实际值是什么?@DougStevenson我在最后一行更新了我的答案请检查亲爱的Renaud两种方法都不起作用显示此错误:在SMTPConnection中未定义收件人。_formatError(/user\u code/node\modules/nodemailer/lib/smtp connection/index.js:605:19)请在第二种方法中帮助我首先,你能确认name和email的值是正确的吗?您可以在云函数代码中执行一些console.log(),并在Firebase控制台中查看输出。您可以确保名称和电子邮件值绝对正确。否则,带有错误电子邮件地址的电子邮件将无法发送我不确定是否理解:你说邮件发送正确吗?您的
邮件传输是如何定义/声明的?也许你可以提出一个新的问题,包括你如何声明mailTransport的所有细节,产生错误的行是什么;等事实上,您最初的问题是关于获取名称
值的问题。
exports.onUserCreated = functions.database.ref('/user/{pushId}')
.onCreate((snapshot, context ) => {
// Do something when a new user is created
var email = snapshot.val().email;
var name = snapshot.val().name;
......