The*_*Kid 3 javascript firebase firebase-realtime-database
我正在构建一个简单的汽车数据库应用.当用户添加新车时,它会创建以下JSON数据,其中包含库的空白字段:
{
"name": "Cars",
"gallery": [{
"img": "http://",
"title": "BMW"
}, {
"img": "http://",
"title": "Lexus"
}, {
"img": "http://",
"title": "Ferrari"
}],
"pageId": "23",
"storeURL": "/app/cars/gallery"
}
Run Code Online (Sandbox Code Playgroud)
现在我想在应用程序中做的是,如果用户添加新的图库图像,它应该在最后一个图库图片之后添加新的图片.所以在法拉利之后应该插入一个新对象.我似乎无法做到这一点,因为每个教程都会导致死胡同,官方Google文档也指定set()
将替换所有数据,因此如果您使用update()
它将添加,在这种情况下它不会添加.
此代码删除所有数据:
function add(){
var data = [
{
title: 'Mercedes',
img: 'http://'
}
]
var postData = {
pageGallery: data
};
var updates = {};
updates['/app/cars/'] = postData;
firebase.database().ref().update(updates);
console.log('New car added');
}
Run Code Online (Sandbox Code Playgroud)
如果我改变并添加孩子:
firebase.database().ref().child('gallery').update(updates);
Run Code Online (Sandbox Code Playgroud)
它没有做任何事情来做数据.你能帮忙吗?
Fra*_*len 14
有关在Firebase数据库中不使用数组的众多原因,请参阅此博客文章.现在读一下,我会在这儿等...
欢迎回来.现在您已经知道为什么您当前的方法将导致痛苦的时间,让我们来看看您应该如何建模这些数据.这篇博客文章已经告诉过你关于推送ID的信息,它们是Firebase的大规模可扩展,离线就绪的阵列式集合方法.
正如我们关于读取和写入数据列表的文档所述,您可以通过调用将项目添加到列表中push()
.
所以,如果这创造了一辆车:
function addStore(){
var rootRef = firebase.database().ref();
var storesRef = rootRef.child('app/cars');
var newStoreRef = storesRef.push();
newStoreRef.set({
name: "Cars",
"pageId": "23",
"storeURL": "/app/cars/gallery"
});
}
Run Code Online (Sandbox Code Playgroud)
然后将图像添加到该商店的图库:
var newCarRef = newStoreRef.child('gallery').push();
newCarRef.set({
title: 'Mercedes',
img: 'http://'
})
Run Code Online (Sandbox Code Playgroud)
这将在画廊的末尾添加一个新的汽车/图像(如果它还不存在则创建画廊).
归档时间: |
|
查看次数: |
20777 次 |
最近记录: |