【发布时间】:2020-10-15 01:12:51
【问题描述】:
我无法在 Flutter 中使用 REST api 将字符串列表发送到云 Firestore。
//###### here is my code ##########
Future<bool> addVisit(Visit visit) async { //function
try {
var response = await http.post( //post method to send data
"${VISIT_API}",
headers:
{"Authorization": "Bearer ${Utils.loginToken}"},
在“Facility”之前工作正常,但在插入“Facility:因为所有其他都是字符串值并且 Facility 是 List 类型时出错”
body: json.encode(
{
"fields": {
"status": {"stringValue": visit.status},
"id": {"stringValue": visit.id},
"name": {"stringValue": visit.name},
"dateTime": {"integerValue": visit.dateTime},
"mob": {"integerValue": visit.mob},
"idproof": {"integerValue": visit.idproof},
"address": {"stringValue": visit.address},
"purpose ": {"stringValue": visit.purpose},
"facility": {"arrayValue": visit.facility} //error line
}
},
),
);
print("reach");
if (response.statusCode == 200) { // successful
print("visit added");
return true;
} else {
print(response.body);
}
} catch (err) {
throw err;
}
}
我会像这样进行后期请求
String VISIT_API =
"https://firestore.googleapis.com/v1/projects/<database-id>/databases/(default)/documents/visits";
错误信息在这里
//###### Error Message #########
I/flutter (26972): { //console output
I/flutter (26972): "error": {
I/flutter (26972): "code": 400,
I/flutter (26972): "message": "Invalid JSON payload received. Unknown name \"arrayValue\" at
'document.fields[8].value': Proto field is not repeating, cannot start list.",
I/flutter (26972): "status": "INVALID_ARGUMENT",
I/flutter (26972): "details": [
I/flutter (26972): {
I/flutter (26972): "@type": "type.googleapis.com/google.rpc.BadRequest",
I/flutter (26972): "fieldViolations": [
I/flutter (26972): {
I/flutter (26972): "field": "document.fields[8].value",
I/flutter (26972): "description": "Invalid JSON payload received. Unknown name
\"arrayValue\" at 'document.fields[8].value': Proto field is not repeating, cannot start list."
I/flutter (26972): }
I/flutter (26972): ]
I/flutter (26972): }
I/flutter (26972): ]
I/flutter (26972): }
I/flutter (26972): }
//#################################
//visit.facility contains :
//["lunch" , "dinner"]
【问题讨论】:
标签: firebase rest flutter google-cloud-firestore flutter-web