【问题标题】:Firebase onCall Function with Multiple Parameters具有多个参数的 Firebase onCall 函数
【发布时间】:2020-08-12 02:05:02
【问题描述】:

如何将两个字符串值发送到特定的云函数。

这是我如何将一个字符串发送到 onCall 函数的示例。

index.js onCall() 云函数

exports.updateUserPassword = functions.https.onCall((data, context) => {

    const uid = data.text;

});

authentication.js在项目根目录下(调用onCall云函数)

var updateUserPassword  = firebase.functions().httpsCallable('updateUserPassword ');

updateUserPassword({text: uid}).then(function(result) {

    var userProperties = result.data.userData;
    var successfulPasswordChange = userProperties.uid;

})

如何实现发送和接收第二个字符串值的方法。

假设修改需要在调用函数中。

({text: uid}) //ex psuedo {text: uid, text: password}

还有如何在 onCall() 函数中使用

var uid = data.text;
var password = data.text;

【问题讨论】:

  • 您是否尝试过您的建议?看起来它会起作用。如果不是,请发布不工作的确切代码以及您的调试信息。
  • 代码运行良好。我只是不知道如何在调用函数中添加两个字符串元素,或者如何在 onCall() 函数中正确分配它们。
  • 正如我所说,您似乎走在了正确的轨道上。您绝对应该在发布之前先尝试您的想法。然后,如果它不起作用,请发布不起作用的部分以及您的调试详细信息。
  • 我真的很想帮助你,但首先我需要了解你到底卡在哪里。因为你听起来没有卡住。好像你知道你在做什么。我想了解您编写的代码没有按照您期望的方式工作。

标签: javascript node.js firebase google-cloud-functions


【解决方案1】:

我认为您可以将什么发送到您的函数以及该对象的外观有些混乱。

您发送的任何数据都将在一个对象中,您不受data.text 的约束,您可以将任何 JSON 对象作为data 传递 所以你的例子:

var myData = {
    uid: "12345",
    newPassword: "one2three4",
    favoriteColor: "blue"
}
updateUserPassword(myData).then(function(result) {
    // ...
})

然后在你的函数中:

exports.updatePassword = functions.https.onCall((data, context) => {
  var newPassword = data.newPassword;
  var uid = data.uid;
  var favoriteColor = data.favoriteColor;
  // ... do whatever
});

其他需要注意的重要事项..

  1. 您不需要在可调用的云函数中手动传递 UID,您可以从上下文中获取它,例如:const uid = context.auth.uid;Firebase Docs
  2. 我会犹豫是否有一个简单的可重写方法来更改用户密码,尽管您可以使用 firebase API
  3. 我会考虑触发重置并使用firebase password reset email flow..

【讨论】:

  • 丹尼斯感谢您的意见。更改密码的目的是在不发送电子邮件的情况下进行定制。
猜你喜欢
  • 2021-04-10
  • 2018-11-02
  • 2022-09-26
  • 1970-01-01
  • 2019-01-26
  • 2019-02-22
  • 2018-12-16
  • 1970-01-01
  • 2022-01-20
相关资源
最近更新 更多