如何更新Firebase特定属性中的对象?

时间:2018-08-29 22:49:40

标签: javascript angular firebase angularfire2

我正在尝试使用AngularFire2和Angular 4更新Firebase中的用户。在已保存到Firebase数据库的用户对象中,我想将另一个对象插入到数组属性中。在我的服务中,我正在尝试执行此功能(我已经在按键等中拥有了所有内容)

generateUserCharacterList(){
  this.genCharList = new CharacterList(x, y, z)
  this.UserListOfCharacters.push(this.genCharList)
  //Other code...
}

但这不起作用

2 个答案:

答案 0 :(得分:0)

Update specific fields文档指出了.update方法的使用。

function writeNewPost(uid, username, picture, title, body) {
  // A post entry.
  var postData = {
    author: username,
    uid: uid,
    body: body,
    title: title,
    starCount: 0,
    authorPic: picture
  };

  // Get a key for a new Post.
  var newPostKey = firebase.database().ref().child('posts').push().key;

  // Write the new post's data simultaneously in the posts list and the user's post list.
  var updates = {};
  updates['/posts/' + newPostKey] = postData;
  updates['/user-posts/' + uid + '/' + newPostKey] = postData;

  return firebase.database().ref().update(updates);
}

答案 1 :(得分:0)

与Firestore相比,我正在考虑使用Firebase实时数据库。

您应该将数组的值放在一个变量中,更改该值,然后使用该新值在对象ref上调用update方法。这是解释的代码示例:

let userRef = db.object('users/aad1asd123-123asd');
let user = userRef.valueChanges();
let listOfChars = user.listOfChars;

listOfChars.push('a');
listOfChars.push('b');
listOfChars.push('c');
listOfChars.push('d');

userRef.update({listOfChars: listOfChars});