2017-01-13 10 views
0

リアルタイムデータベースで更新する必要があるデータがありますが、setコマンド(as described here in the docs)が機能していません。私は(それゆえ、すべての既存のデータを読み込み)書き込みには影響を与えませんいくつかの他のものをやっているFirebaseリアルタイムデータベース:新しいデータの書き込みに失敗しています

var config = { 
    //CONFIG 
}; 
Firebase.initializeApp(config); 

var dbRef = Firebase.database().ref(); 

getAllFirebaseDocs(dbRef); 

async function getAllFirebaseDocs(dbRef, newSet) { 
    var snapshot = await dbRef.once('value'); 
    var data = snapshot.val(); 
    var bookName = "FirebaseForDummies"; 
    var newData = { 
     'prop1': 'string', 
     'prop2': 0 
    } 
    Firebase.database().ref(bookName + "/edition/"+ 3).set(newData);  
} 

:ここで私はbabel-node scriptName.jsを実行している私のコードは、です。私は特に、既存のデータを更新/拡張しています。本FirebaseForDummiesにはすでに3つのエディションがあります。これは、データベース内のeditions値は次のようになりますことを意味します

0: {data} 
1: {data} 
2: {data} 

私は第四を追加したいので、私はFirebaseForDummmies/edition/3とDBの参照を作成します。そして、ドキュメントのように、私はsetを使って、newDataオブジェクトを渡します。しかし、これは黙って失敗します。エラーメッセージは表示されず、リアルタイムデータベースコンソールには何も変わりません。

編集: 私はこれらのコマンドをコンソールのbabel-nodeセッションで試してみました。私のスクリプトにはset()の機能が動作しないものがあります。既存のデータにset()を実装している他のスクリプトがあり、それらはすべて正常に動作しているので、それは何であるかわかりません。

EDIT2:

Firebase.database().ref(bookName + "/edition/"+ 3).set(newData, function(error) { 
     if(error) { 
      console.log(error); 
     } 
     else { 
      console.log("written!"); 
     } 
    }); 

を繰り返しますが、私はそれが正常に動作babel-nodeコンソールでそれをしようとすると、(帰国「書かれた!」)が、私のスクリプトでは、私はしないでください次のように は私がコールバックを追加しましたエラーまたは成功console.logを取得します。

答えて

0

答えは、スクリプトの最後にprocess.exit()を行うことではありません。私はそれが終わったときにスクリプトを閉じるために単にそれを置くので、私はそれを考えることさえしませんでしたが、明らかに要求を「切断」していました。私はawaitsetリクエストで動作するようにしなければならないと思います。

関連する問題