[英]Cloud function sending json as string
我开始学习云函数。 我希望实现的是将 json 发送到云 function 并获取所有与我在 json 中发送的电话号码相同的文档。
云 function:
exports.getUsers = functions.https.onRequest(async (request, response) => {
const data = request.body.data;
if (data !== null && data.users !== null) {
const users = data.users;
const phonelist = users.map(user => user.phone.toString());
const userlist = []
const snapshot = await db.collection("users").get()
snapshot.docs.forEach((userDoc) => {
const phone = userDoc.get("phone")
if(phone === null) return;
const isContain = phonelist.reduce((acc, num) => acc || phone.includes(num), false)
if(isContain) {
userlist.push(userDoc.data())
}
})
response.status(200).json({result: userlist})
} else{
response.sendStatus(403)
}
});
马云拨打Android:
private fun addMessage(): Task<String>? {
// Create the arguments to the callable function.
val data = "{\n" +
" \"data\": {\n" +
" \"users\": [\n" +
" {\n" +
" \"phone\": 55512345\n" +
" },\n" +
" {\n" +
" \"phone\": 972525276676\n" +
" },\n" +
" {\n" +
" \"phone\": 55512347\n" +
" }\n" +
" ]\n" +
" }\n" +
"}"
functions.getHttpsCallable("getUsers")
.call(data)
.addOnFailureListener {
Log.d("DTAG", it.toString())
}
.addOnSuccessListener {
Log.d("DTAG","Ok: ${it.data.toString()}")
}
return null
}
我从云 function 收到错误:无法读取未定义的属性(读取“地图”)
您不应将原始字符串作为 JSON 提供给 Firebase SDK。相反,如果您希望它自动将其转换为 JSON Object,请提供Map<String, Object>
。 文档中有一个示例。 Firebase 在两端处理 JSON 输入和 output,因此您只需处理来自 JSON 的本地语言数据结构,这比手动构建 JSON 更方便且更不容易出错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.