У меня есть 11 различных числовых полей для каждого пользователя в моем приложении.Я хочу построить API, чтобы увеличить одно из этих полей на определенную величину.
Запрос будет иметь такую форму:
{
"uid":"Qewqhfui7232289",
"field":"someName",
"value":13.4
}
API затем получит документ с идентификатором "uid "и увеличиваем поле someName на 13,4
Большинство примеров, которые я вижу, увеличивают определенное поле на константу.
Примерно так (но на самом деле это работает):
var router = express.Router();
router.post('/increment', function (req, res, next) {
var ref = db.collection('UserInfo').doc(req.body.uid);
var field=req.body.field;
var value=req.body.value;
var transaction = db.runTransaction(function(t) {
return t.get(ref)
.then(function(doc) {
var updated= doc.data().field + value;
t.update(ref, {field: updated);
});
}).then(function(result) {
console.log('Transaction success!');
}).catch(function(err) {
console.log('Transaction failure:', err);
});
res.send("response");
});
Нужно ли создавать API для каждого отдельного поля?
И поддерживает ли Firestore приращение переменных (т.е. не жестко запрограммированное число)?
РЕДАКТИРОВАТЬ: Некоторые пояснения::
1) Я просто планирую редактировать отдельные документы, а не несколько.
2) Я хочу создать API-интерфейс, который может увеличивать любое поле в соответствии с вводом тела запроса (вместосоздание API для каждого поля).Но это не существенно, так как я могу просто создать несколько API.
3) Мой главный приоритет - это знать, как увеличивать, используя переменную, которая устанавливается с помощью req.body.value, а не с фиксированным числом, которое жестко закодированов API.
EDIT2: я решил создать API для каждого поля.