angularfire2通过动态数据内容设置对象的标题

时间:2016-10-03 23:25:19

标签: typescript angularfire2

是否可以使用字符串变量?

设置对象的名称

例如:

car: {
  brands: {
    var1: {}, 
/*where var1 is a model and want to add some more models in different spaces in time.*/
  }
}

这是我想象的查询:

addBrand (var1) {
  var brandRef = firebase.database () .ref ().child ('car/brands');
    brandRef.set ({
      var1: {} 
    });
}

我得到的输出是文本var1,而不是它的值。

有没有办法实现这个目标?

3 个答案:

答案 0 :(得分:1)

我做的是:

let brandRef = firebase.database () .ref ().child ('car/brands');
brandRef.child (var1).set ({
  whatever: ''
});

完美无缺!

答案 1 :(得分:0)

更新了答案

你可以这样做:

addBrandInfo (brandName, brandInfo) {
  let brandRef = firebase.database().ref(`car/brands/${brandName}`);
  brandRef.set(brandInfo);
}

updateBrandInfo (brandName, brandInfo) {
  let brandRef = firebase.database().ref(`car/brands/${brandName}`);
  brandRef.update(brandInfo);
}

以下部分尝试通过示例显示每个调用如何影响firebase:

// Let's assume your firebase is empty.

addBrandInfo('tesla', { established: 2003, founder: 'Elon Musk' });
// car: {
//   brands: {
//     tesla: { established: 2003, founder: 'Elon Musk' }
//   }
// }

addBrandInfo('ford', { established: 1905, founder: 'Henry Ford' });
// car: {
//   brands: {
//     ford: { established: 1905, founder: 'Henry Ford' },
//     tesla: { established: 2003, founder: 'Elon Musk' }
//   }
// }

updateBrandInfo('ford', { established: 1903 });
// car: {
//   brands: {
//     ford: { established: 1903, founder: 'Henry Ford' },
//     tesla: { established: 2003, founder: 'Elon Musk' }
//   }
// }

请注意最后一次通话updateBrandInfo()如何仅更新已建立的年份,但只留下创始人Henry Ford

注意 car/brands/${brandName}周围的单引号是一个回拨号,是单引号。

答案 2 :(得分:0)

使用Angularfire2尝试以下方法:

addbrand (var1, value) {
     const toSend = this.af.database.object(`/car/brands/${var1}`);
     toSend.set(value);
}