具有多个参数的 Firebase onCall 函数

hus*_*nie 0 javascript node.js firebase google-cloud-functions

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

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

index.js onCall() 云函数

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

    const uid = data.text;

});
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

})
Run Code Online (Sandbox Code Playgroud)

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

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

({text: uid}) //ex psuedo {text: uid, text: password}
Run Code Online (Sandbox Code Playgroud)

还有如何在 onCall() 函数中检索它

var uid = data.text;
var password = data.text;
Run Code Online (Sandbox Code Playgroud)

Den*_*lek 6

我认为对于可以发送给函数的内容以及该对象的外观存在一些混淆。

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

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

然后在你的函数中:

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

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

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