Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有多个参数的Firebase onCall函数_Javascript_Node.js_Firebase_Google Cloud Functions - Fatal编程技术网

Javascript 具有多个参数的Firebase onCall函数

Javascript 具有多个参数的Firebase onCall函数,javascript,node.js,firebase,google-cloud-functions,Javascript,Node.js,Firebase,Google Cloud Functions,如何向特定的云函数发送两个字符串值 ({text: uid}) //ex psuedo {text: uid, text: password} 下面是如何将一个字符串发送到onCall函数的示例 ({text: uid}) //ex psuedo {text: uid, text: password} index.jsonCall()云函数 exports.updateUserPassword = functions.https.onCall((data, context) => {

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

({text: uid}) //ex psuedo {text: uid, text: password}
下面是如何将一个字符串发送到onCall函数的示例

({text: uid}) //ex psuedo {text: uid, text: password}
index.jsonCall()云函数

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

    const uid = data.text;

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

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

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

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

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

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

({text: uid}) //ex psuedo {text: uid, text: password}
以及如何在onCall()函数中使用

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

我认为在函数中可以发送什么以及该对象的外观方面存在一些混淆

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

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
});
其他需要注意的重要事项

  • 您不需要在可调用的云函数中手动传递UID,您可以从如下上下文中获取它:
    const UID=context.auth.UID
  • 我会犹豫是否有一个简单的可覆盖方法来更改用户密码,尽管您可以使用
  • 我会考虑触发重置并使用…
    你试过你的建议了吗?看起来会有用的。如果不是,请发布不起作用的确切代码,以及调试信息。代码工作正常。我只是不知道如何在调用函数中添加两个字符串元素,或者如何在onCall()函数中正确分配它们。在发布之前,你应该先尝试一下你的想法。然后,如果它不起作用,发布什么不起作用,以及调试细节。我真的很想帮助你,但首先我需要了解你到底被困在哪里。因为你听起来没有被卡住。看来你知道自己在做什么。我想了解您编写的代码中有什么地方没有按照您所期望的方式工作。Dennis感谢您的输入。更改密码的目的是在不发送电子邮件的情况下进行自定义。