@@ -405,7 +405,24 @@ Blockly.JavaScript['data_firebase_read'] = function (block) {
405405 var value_read_ = Blockly . JavaScript . valueToCode ( block , 'read_' , Blockly . JavaScript . ORDER_ATOMIC ) ;
406406 var statements_do_ = Blockly . JavaScript . statementToCode ( block , 'do_' ) ;
407407 var code = variable_name_ + '.on("value", function(snapshot) {\n' +
408- ' var ' + value_read_ + '=[];\n' +
408+ ' ' + value_read_ + '=[];\n' +
409+ ' snapshot.forEach(function(data) {\n' +
410+ ' ' + value_read_ + '.push(data.val().' + text_attr_ + ');\n' +
411+ ' });\n' +
412+ ' ' + statements_do_ + '\n' +
413+ ' }, function (errorObject) {\n' +
414+ ' console.log("The read failed: " + errorObject.code);\n' +
415+ '});\n' ;
416+ return code ;
417+ } ;
418+
419+ Blockly . JavaScript [ 'data_firebase_readonce' ] = function ( block ) {
420+ var variable_name_ = Blockly . JavaScript . variableDB_ . getName ( block . getFieldValue ( 'name_' ) , Blockly . Variables . NAME_TYPE ) ;
421+ var text_attr_ = block . getFieldValue ( 'attr_' ) ;
422+ var value_read_ = Blockly . JavaScript . valueToCode ( block , 'read_' , Blockly . JavaScript . ORDER_ATOMIC ) ;
423+ var statements_do_ = Blockly . JavaScript . statementToCode ( block , 'do_' ) ;
424+ var code = variable_name_ + '.once("value", function(snapshot) {\n' +
425+ ' ' + value_read_ + '=[];\n' +
409426 ' snapshot.forEach(function(data) {\n' +
410427 ' ' + value_read_ + '.push(data.val().' + text_attr_ + ');\n' +
411428 ' });\n' +
@@ -423,3 +440,4 @@ Blockly.JavaScript['data_firebase_clear'] = function (block) {
423440 'console.log("clear ok");\n' ; ;
424441 return code ;
425442} ;
443+
0 commit comments