Рассмотрим следующий код для атомных записи на нескольких местах в FireBase:Firebase, мульти обновления местоположения
var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
var newPostRef = ref.child("posts").push();
var newPostKey = newPostRef.key();
var updatedUserData = {};
updatedUserData["users/"+authData.uid+"/posts/" + newPostKey] = true;
updatedUserData["posts/" + newPostKey] = {
title: "New Post",
content: "Here is my new post!"
};
ref.update(updatedUserData, function(error) {
if (error) {
console.log("Error updating data:", error);
}
});
Этот подход может быть использован для обновления пост в разных местах, но как обеспечить атомное обновление на серверная сторона? (по правилам).
Как я могу убедиться, что пользователи не могут обновить местоположение /posts/
(через его прямую ссылку) без заполнения users/UID/posts/
или наоборот?
Спасибо, Фрэнк, я использовал подобный подход, но я смутил себя использованием newData.val() вместо 'exists()' .. Кстати, я просто добавил часть «источник обновления» чтобы читатели поняли, что я ищу решение на стороне сервера, которое гарантирует правильный выход, независимо от того, что произошло на стороне клиента ... но в любом случае спасибо за ответ. Решила мою проблему :) –
Если у вас уже есть подход, который не работает, ** всегда ** отправляйте то, что у вас есть в вашем вопросе. Это показывает, что вы уже что-то пробовали, плюс это позволяет нам копировать/вставлять фрагменты в наш ответ. –
ссылаясь на этот вопрос, может 'newData.parent() ...' можно использовать несколько раз внутри '.validate '' правила определенного узла? – Andrea