firebase - 我有firebase云功能,当邮递员提出请求时,该功能最终工作,但当我收到颤振请求时出错
问题描述
我试图从高级 REST 客户端发送请求,它工作正常,但从颤振不工作。
火力基地功能
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);
const quantity = 'quantity';
const colors = 'colors';
const price = 'price';
const db = admin.firestore();
exports.addProductQuantity = functions.https.onRequest((request, response) => {
const ii = request.get('count');
const id = request.get('product_id');
const promise = db.collection(colors).doc(id).get();
const p2 = promise.then(snapshot => {
var newVal = snapshot.get(quantity);
newVal = Number(newVal) + Number(ii);
db.collection(colors).doc(id).update({
quantity: newVal
});
return response.status(200).send('OK '+newVal);
});
p2.catch(error => {
console.log(error);
return response.status(500).send(error.data);
});
});
颤振代码
static Future addProductQuantity(Product product) async {
Map<String, dynamic> map = Map();
map["product_id"] = "d0001";
map["count"] = 25;
final HttpsCallable callable = CloudFunctions.instance
.getHttpsCallable(functionName: "addProductQuantity");
try {
dynamic resp = await callable.call(map);
} catch (e) {
print("Cloud Function Error: $e");
}
}
firebase 功能日志中的错误
addProductQuantity
Error: Value for argument "documentPath" is not a valid resource path. Path must be a non-empty string.
at Object.validateResourcePath (/srv/node_modules/@google-cloud/firestore/build/src/path.js:403:15)
at CollectionReference.doc (/srv/node_modules/@google-cloud/firestore/build/src/reference.js:1718:20)
at exports.addProductQuantity.functions.https.onRequest (/srv/index.js:13:43)
at cloudFunction (/srv/node_modules/firebase-functions/lib/providers/https.js:57:9)
at /worker/worker.js:783:7
at /worker/worker.js:766:11
at _combinedTickCallback (internal/process/next_tick.js:132:7)
at process._tickDomainCallback (internal/process/next_tick.js:219:9)
我product_id
在 ARC 中尝试过同样的方法,效果很好
解决方案
我遇到了同样的问题,在使用邮递员进行测试时,我正在传递raw
数据,然后jsonEncode
在云功能中执行。当我jsonEncoded
在 Flutter 中传递数据时,问题就出现了。
所以,我实际上执行了 jsonEncode 两次,这造成了一个问题。只需从云功能中删除 jsonEncode。
推荐阅读
- python - 来自python的cx_Oracle连接问题
- css - 如何在 CSS 网格中为“1fr”指定宽度和高度?
- reactjs - useCallback 钩子的第二个参数
- firebase - 图书馆书籍 + 愿望清单数据的 Firestore 数据建模
- php - PHP 中的银行系统程序
- docker - 如何在 podman 映像中创建用户帐户?
- flutter - in_app_purchase:iOS 13.4 上不显示购买对话框
- reporting-services - 使用多个日期格式化 SSRS 输出
- node.js - 正则表达式路由不通过 req.params
- android - 在现有片段中使用 ViewPager2