如何将变量传递给URL?

时间:2017-12-03 21:29:49

标签: javascript typescript firebase

我试图发送一封电子邮件,其中包含从Firebase中检索到的值的正文链接。我成功检索了该值,但我不知道如何将其附加到已列出的链接。 这是代码:

sendinvite() {
      var user = firebase.auth().currentUser;
      var uid = user.uid;

      firebase.database().ref('/userlist/' + uid + '/' + 'hashKey').once('value').then(function(snapshot) {
        var hashKey = (snapshot.val());
        console.log(hashKey)
      });

      var bcc = [];
      for(var e in this.emailinputs){
        if (this.emailinputs[e].email==null || this.emailinputs[e].email=="" || !this.emailinputs[e].email.includes("@") || !this.emailinputs[e].email.includes("."))
        {
          let alert = this.alerCtrl.create({
            title: 'Error!',
            message: 'There was an error with an email address you entered.',
            buttons: ['Ok']
          });
          alert.present()
        }else {
          bcc.push(this.emailinputs[e].email);
        }
      }
      if(bcc.length > 0) {
        let email = {
          bcc: bcc,
          subject: 'Nudget Invite',
          body: '<a href="https://nudget-72ee4.firebaseapp.com/?hashkey='+hashKey+'">Join my grocery list!</a>',
          isHtml: true
        };
        this.emailComposer.open(email);
      }
}

我希望将变量hashKey附加到正文中列出的网址,但我不确定如何实现此目标。

修改1

更新了主体以将变量附加到字符串。我不确定在哪里可以放置来自Firebase的哈希键,以便正确引用它。

2 个答案:

答案 0 :(得分:0)

我看到的主要问题是你将'hashkey'变量仅限于firebase ... function(快照)块。这应该在'uid'变量附近的顶部定义,以便所有这些代码都可以引用它。

然后在你的快照函数中,删除hashkey前面的'var',所以它只是设置现有的变量。

另外,在发送电子邮件之前,请务必检查'hashkey'是否具有非空值。

HTH, 吉姆

答案 1 :(得分:0)

我认为问题在于:

firebase.database().ref('/userlist/' + uid + '/' + 'hashKey').once('value').then(function(snapshot) {
    var hashKey = (snapshot.val());
    console.log(hashKey)
});

您正在匿名函数中创建名为var的{​​{1}},然后尝试访问该函数之外的hashKey

请尝试以下方法:

hashKey