2016-07-15 67 views
2

的火力数据库push方法将对象添加到数据库孩子唯一的密钥,例如,火力地堡推到数据库对象的数组

postsRef.push({ 
    author: "gracehop", 
    title: "Announcing COBOL, a New Programming Language" 
}); 

提出类似的数据库中的以下

"posts": { 
    "-JRHTHaIs-jNPLXOQivY": { 
     "author": "gracehop", 
     "title": "Announcing COBOL, a New Programming Language" 
    } 

但是,如果我使用对象数组的push方法,例如

postsRef.push({ 
     { 
      author: "gracehop1", 
      title: "Announcing COBOL, a New Programming Language" 
     }, 
     { 
      author: "gracehop2", 
      title: "Announcing COBOL, a New Programming Language" 
     }}); 

我得到一个唯一的键与数据库中列举的对象,即

"posts": { 
    "-JRHTHaIs-jNPLXOQivY": { 
     "0": { 
     "author": "gracehop1", 
     "title": "Announcing COBOL, a New Programming Language" 
     }, 
     "1": { 
     "author": "gracehop2", 
     "title": "Announcing COBOL, a New Programming Language" 
     } 
    }} 

有什么办法push对象在一个事务中的阵列,使得我得到一个唯一的密钥为阵,即在每一个对象,看起来像

"posts": { 
     "-JRHTHaIs-jNPLXOQivY": { 
      "author": "gracehop1", 
      "title": "Announcing COBOL, a New Programming Language" 
     "-JRHTHaIs-jNPLXOQivZ": { 
      "author": "gracehop2", 
      "title": "Announcing COBOL, a New Programming Language" 
      } 
     }} 

回答

6

一个鲜为人知的事实的结果是,你可以调用push()不带任何参数它只会为你生成一个位置/推送ID。与多位置更新(见herehere),你可以这样做:

var key1 = postsRef.push().key; 
var key2 = postsRef.push().key; 
var updates = {}; 
updates[key1] = { 
     author: "gracehop1", 
     title: "Announcing COBOL, a New Programming Language" 
    }; 
updates[key2] = { 
     author: "gracehop2", 
     title: "Announcing COBOL, a New Programming Language" 
    }; 
ref.update(updates); 
+2

因此,在短期没有办法进行多次推一气呵成呢? – Gardezi