【问题标题】:Save with firebase with a dynamic key name使用动态键名与 firebase 一起保存
【发布时间】:2018-04-26 12:47:15
【问题描述】:

我正在尝试在我的数据库中插入用户选择的月份。

saveInBdd (){
  this.errors = [];

  const user = firebase.auth().currentUser;
  user.updateProfile({
    displayName: this.firstname,
  }).then(()=>{
    this.saveUserToUsersRef(user)
  }, error => {
    this.errors.push(error.message)
  })
},
saveUserToUsersRef(user){
  return this.usersRef.child(user.uid).update({
    tab1: { this.months[0].selectedOption : "test"}
  })
},

此代码将此错误返回给我:

【问题讨论】:

标签: javascript firebase firebase-realtime-database vue.js


【解决方案1】:

您使用的表示法中的 JSON 对象的属性名称必须是文字。要将变量用作属性的名称,请使用[] 表示法:

saveUserToUsersRef(user){
  var updates = {};
  updates[this.months[0].selectedOption] = "test";
  return this.usersRef.child(user.uid).update(updates))
},

【讨论】:

  • 如果我想添加一个 JSON 来更新,我该怎么做而不删除其中的内容? 2018 年:{ 1 月:{ 数据:xx },2 月:{ 数据:xx },}
  • 如果要更新特定值,请确保在更新的键中使用该值的路径。例如。 updates['2018/january/data'] = 'xx'.
  • 其实我是想按照用户给的年份和月份来放数据库数据。我测试过:year[this.years[0].selectedOption/year[this.months[0].selectedOption/data] = "xx" 但它不起作用
  • 好像应该是year[this.years[0].selectedOption/year[this.months[0].selectedOption+"/data"] = "xx"
  • 用你的firebase代码告诉我:2018:{未定义:{数据:xx}}
猜你喜欢
  • 2023-04-07
  • 2020-08-03
  • 2018-05-23
  • 2021-04-28
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
相关资源
最近更新 更多