Я не могу отправить список строк в облачный хранилище с помощью REST api во флаттере.
//###### 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"]
0
Avinash Mawle
24 Июн 2020 в 20:28
1 ответ
Лучший ответ
Попробуйте записать значение массива facility
следующим образом:
"facility": {
"arrayValue": {
"values": [
{
"stringValue": "lunch"
},
{
"stringValue": "dinner"
}
]
}
}
Часть "values"
взята из ссылок на Value и arrayValue.
1
Juan Lara
25 Июн 2020 в 23:26
Похожие вопросы
Связанные вопросы
Новые вопросы
firebase
Firebase - это бессерверная платформа для унифицированной разработки приложений для мобильных устройств и для Интернета.