myApp--> news
--> K8ZqRIzrX6L3q-HjO8V --> title : "value title1"
--> body : "value body1"
--> ....
--> K8ZqRJ1tI7onmoVX8G4 --> title : "value title2"
--> body : "value body2"
--> ....
[{title: "value title2", body: "value body2", ...},{title: "value title3", body: "value body3", ...}]
编辑:我使用了MyFireBaseRef.push(),示例代码如下所示,
objNews.forEach(function(news){
myFirebaseRef.push(news,function(){
$('.result').append('<li><strong>' + news.title + '</strong></li>');
});
});
其中objNews有新的数据以及firebase已经有的数据。我想要实现的是只从ObjNews中推送新的数据,避免firebase已经有的数据。但是我的代码将Object中的所有数据推到firebase,结果是重复的。
如果我理解正确的话,您有一个包含新闻文章的JavaScript数组:
[
{title: "value title2", body: "value body2", ...},
{title: "value title3", body: "value body3", ...}
]
您希望将该数组发送到Firebase,然后能够更新数组中的值,并将更新发送到Firebase。
这是一个反模式,不要这样做!
var keysByIndex = {};
objNews.forEach(function(news, index){
var newRef = myFirebaseRef.push(news);
keysByIndex[index] = newRef.key();
});
var keysByIndex = {};
objNews.forEach(function(news, index){
if (keysByIndex[index]) {
var newRef = myFirebaseRef.push(news);
keysByIndex[index] = newRef.key();
}
else {
myFirebaseRef.child(keysByIndex[index]).update(news);
}
});
它是这样工作的:
your app Firebase
+-+
-------- send write command --> | |
+-+ | |
|s| |s|
|t| |t|
|a| |a|
|t| <-- listen for changes --- |t|
|e| |e|
+-+ | |
+-+
在这个场景中,本地应用程序状态(在您的场景中为objnews
)来自对Firebase的监听。所有更改都写入Firebase,而不是写入本地数组。
一个关于如何使用它的小片段。我将只创建/更新DOM元素,因为这也是您的代码所做的:
myFirebaseRef.on('child_added', function(snapshot) {
// a news article was added, add it to the HTML
var key = snapshot.key();
var news = snapshot.val();
$('.result').append('<li id="'+key+'"><strong>' + news.title + '</strong></li>');
})
myFirebaseRef.on('child_changed', function(snapshot) {
// a news article was changed, update the HTML for it
var key = snapshot.key();
var news = snapshot.val();
$('#'+key).html('<li id="'+key+'"><strong>' + news.title + '</strong></li>');
})
myFirebaseRef.on('child_removed', function(snapshot) {
// a news article was remove, remove the HTML for it
var key = snapshot.key();
var element = document.getElementById(key);
element.parentNode.removeChild(element);
})
我遇到了非常奇怪的情况。我成功地将Android SDK工具更新到版本22.6.1。现在当我启动ADT(Eclipse)时,它会向我显示一条消息,上面写着以下内容。 当我按下“检查更新”按钮时,Eclipse会显示一条消息,上面写着“未找到更新”消息。如果我通过帮助-检查更新执行此操作,结果相同。 如果我打开Help-Install New Software并选择Developer Tools U
我有一张非常复杂的表格,是这样的:- 现在,我需要处理一个应该重复一行的查询,其中假设p2、p3或p1、p2甚至仅p2值对于该特定年份或从2009年、2010年或2011年中的任何一年都不可用,并将最后一列的值作为零放入其中。 所以现在我的数据库看起来应该像- 我试着使用临时表 但它不起作用。有谁能帮我。
问题内容: 这个问题已经在这里有了答案 : 如何将mysql更改为mysqli? (11个答案) 3年前关闭。 因此,由于不推荐使用MYSQL,并且eveyone不断告诉我进行更新,所以我认为这是我做的时间。 但是由于我不习惯mysqli_ *,对我来说似乎有些陌生。当我用Mysql编码整个网站时,这不是一个简单的编辑。 所以我想知道:如何将以下代码转换为Mysqli?只是为了给我和其他任何人一个
问题内容: MySQL有这样的东西: 据我所知,SQLite中不存在此功能,我想知道的是,是否有任何方法可以实现相同的效果而不必执行两个查询。另外,如果这不可能,那么您更喜欢什么: SELECT +(插入或更新) 或 UPDATE( 如果UPDATE失败,则 + INSERT ) 问题答案: 由于3.24.0 SQLite还支持upsert ,因此现在您可以简单地编写以下内容
我正在从一个文件导出常量并将其导入另一个文件,如下所示: 常数.js App.js 我希望我的初始状态是在构造函数中设置的,然后在componentWillMount上,我希望使用常量文件中的值设置状态,然后再围绕组件和流添加进一步的逻辑。 但是,我发现,我的状态没有被更新,如果我在调用setState之后记录控制台日志,状态仍然没有定义,如果我引入一个方法,需要state中的值,那么在执行堆栈的
我试图在if语句中设置状态,但它不会这样做。结果,我需要从if语句中更新状态,在那个里我可以接收经度和纬度坐标,但它不会保存状态。若我在If语句之外的控制台中回显,我将只读取第一个setState值表单componentWillMount。有什么问题吗?我做错了什么?结构如下: