swift - firebase http函数如何将快照返回到swift应用程序
问题描述
我有一个 firebase 函数,通过 geohash 搜索半径执行查询和过滤。它正在工作,但我正在返回 Json,而我真正想做的是返回一个快照。我是 Firebase 功能的新手。
这是我的火力基地功能
var GeoFirestore = require('geofirestore').GeoFirestore;
exports.geoQueryWitningRadius = functions.https.onRequest(async (req, res) => {
const data = req.body;
const lat = data.lat;
const lon = data.lon;
const radius = data.radius;
const firestore = admin.firestore();
const geofirestore = new GeoFirestore(firestore);
const geocollection = geofirestore.collection('pickups');
const query = geocollection.near({ center: new admin.firestore.GeoPoint(lat, lon), radius:
radius });
await query.get().then((snapshot) => {
return res.send(snapshot)
}).catch(error => {
console.log('error', error);
});
});
这是我在 swift 中的 http 请求
static func getGeoHashPickups(radius: Int, completion: @escaping([String: Any]?, String?) -> Void) { //url, Error
let parameters : [String : Any] = [
"lat" : UserService.user.lat,
"lon" : UserService.user.lon,
"radius" : radius
]
let url = "https://us-central1-app-request-ect"
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: [:]).responseJSON { response in
switch response.result {
case .success(let dict):
guard let dictionary = dict as? [String : Any] else { return }
completion(dictionary, nil)
case .failure(let error):
print(error.localizedDescription)
completion(nil, error.localizedDescription)
}
}
}
如何将返回到前端的内容转换为快照?
解决方案
Cloud Functions 无法发回 a DocumentSnapshot
,因为该类型不可序列化。并且没有办法将 JSON 转换回DocumentSnapshot
Swift 代码中的 a。
但是你得到的归结为该快照的数据,这应该足够了。如果您在返回的数据中遗漏了某些内容,您还必须从您的 Cloud Functions 代码中返回该附加信息,以便 Swift 代码可以获取它。
推荐阅读
- intellij-idea - 运行“webstorm”后如何抑制警告并结束终端命令。
- php - 如何在 laravel 库中添加自定义方法
- microsoft-teams - Microsoft 流程在自适应卡片中提及整个团队(不是单个用户)
- php - 如何使用 PHP for 循环编写多单选单?
- python-3.x - 使用服务主体从 ADLS gen2 读取镶木地板文件
- python - 使用 Python xlwings 激活(切换到)另一本打开的 excel 书
- c++ - 如何在 C++ 中调用模板运算符 []?
- arrays - 一个人在C的终端中输入值后如何将值保存到文件中?
- javascript - 使用节点 js 在递归中调用异步函数
- python - django.core.exceptions.AppRegistryNotReady:应用程序尚未加载。在 Django 3.1 中