guardar - react-redux-firebase
Integridad de datos NoSQL(Firebase+Redux) (0)
Vi el siguiente código de una de las aplicaciones de ejemplo de Firebase ( Enlace ):
// Write the new post''s data simultaneously in the posts list and the user''s post list.
var updates = {};
updates[''/posts/'' + newPostKey] = postData;
updates[''/user-posts/'' + uid + ''/'' + newPostKey] = postData;
Cuando agrega una nueva publicación, escribe el mismo objeto de datos en dos lugares diferentes. Esto me pareció extraño porque ahora significa que hay dos datos exactamente iguales de los que debe ocuparse si desea actualizarlos o eliminarlos. Prefiero hacer algo como esto:
post: {
id: 1,
username: ''awesomeMan'', // store necessary author''s metadata
title: ''hello'',
body: ''body
}
author: {
id: 1,
username: ''awesomeMan'',
email: ''[email protected]'',
posts: {
1: true // index posts by their ids
}
}
Si lo hago de esta manera, todavía tengo un poco de datos duplicados porque almaceno los metadatos del username
dentro de una publicación. Pero, ¿no es mejor que tener dos datos exactamente iguales en dos lugares?
Editar: pregunta de seguimiento Quiero agregar recursos de Comments
a las Posts
. Dadas estas dos opciones, ¿cuál es mejor y por qué?
Opción 1.
Almacene todos los comentarios relacionados con postId
en esta ruta:
/post-comments/${postId}
Este es el único camino para comentarios y no almacenamos nada en comments/
Opcion 2.
Almacenar comentarios en comments/
e indexarlos por identificadores en posts
.
/post/${postId}/comments #only consists of commentIds that belong to this post
/comments/${commentId}