2017-01-13 3 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 요청과 함께 작동 시켜서 모든 것이 동 기적으로 일어날 수 있도록해야한다고 생각합니다.

관련 문제