Документация для API FESTtore REST здесь .
Чтобы создать документ, необходимо отправить запрос POST на URL в следующем формате:
https://firestore.googleapis.com/v1/{parent=projects/*/databases/*/documents/**}/{collectionId}
С экземпляром Document
в теле запроса.
Чтобы быть более конкретным, ниже приведен пример на простой странице HTML (с использованием библиотека Ax ios для выдачи HTTP-запроса). Этот код создаст новый документ в коллекции collection1
Firestore.
Просто сохраните этот файл на локальном диске, измените значение <yourprojectID>
и откройте эту страницу в браузере прямо с локального диска.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
<script>
var firebaseProjectId = '<yourprojectID>';
var collectionId = 'collection1';
var url =
'https://firestore.googleapis.com/v1/projects/' +
firebaseProjectId +
'/databases/(default)/documents/' +
collectionId;
var writeObj = {
fields: {
name: {
stringValue: 'theName'
},
initialBudget: {
doubleValue: 1200
}
}
};
axios.post(url, writeObj).catch(function(error) {
console.log(error);
});
</script>
</body>
</html>
Для того, чтобы чтобы обновить массив в существующем документе, вы должны использовать FieldTransform
с appendMissingElements
элементами.
Выдержка из этого do c для appendMissingElements
элементов:
appendMissingElements
: добавить данные элементы по порядку, если они еще не присутствуют в текущем значении поля. Если поле не является массивом или если поле еще не существует, для него сначала устанавливается пустой массив.
Ниже приведен пример значения FieldTransform
, содержащего appendMissingElements
elements.
{
"transform": {
"document": "projects/" + firebaseProjectId + "/databases/(default)/documents/....,
"fieldTransforms": [
{
"setToServerValue": "REQUEST_TIME",
"fieldPath": "lastUpdate"
},
{
"appendMissingElements": {
"values": [
{
"stringValue": "...."
}
]
},
"fieldPath": "fieldName"
}
]
}
}
ОБНОВЛЕНИЕ СЛЕДУЕТ ЗА ВАШИМ КОММЕНТАРИЕМ
Должно работать следующее (проверено положительно):
var collectionId = 'SensorData';
var url =
'https://firestore.googleapis.com/v1/projects/' +
firebaseProjectId +
'/databases/(default)/documents:commit';
var writeObj = {
writes: {
transform: {
document:
'projects/' +
firebaseProjectId +
'/databases/(default)/documents/' +
collectionId +
'/Temperature',
fieldTransforms: [
{
setToServerValue: 'REQUEST_TIME',
fieldPath: 'lastUpdate'
},
{
appendMissingElements: {
values: [
{
integerValue: 25
}
]
},
fieldPath: 'Temperature'
}
]
}
}
};