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

angularfire2 set the title of an object by dynamic data content

是否可以使用字符串变量设置 object 的名称?

例如:

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,而不是它的值。

有什么方法可以实现吗?

更新答案

你可以这样做:

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} 周围的单引号是一个反引号,不是 单引号。

我做的是:

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

完美运行!

使用 Angularfire2 尝试如下方法:

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