首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >reactfire React+firebase“在属性中包含无效的键(.key)”

reactfire React+firebase“在属性中包含无效的键(.key)”
EN

Stack Overflow用户
提问于 2016-03-22 15:24:15
回答 1查看 261关注 0票数 1

尝试使用update()或set()时出现错误

我的相关代码:

代码语言:javascript
复制
const ref = new Firebase('https://whatever.firebase.org/employees');
export default class EmployeeNew extends React.Component {
...
  this.update = () => {
    console.log(this.state, this.props.employee['.key']);
    ref.child(this.props.employee['.key']).set(this.state); // <-- no-dice
    // ref.update(this.state); <-- also fails.
  }
...
}

当如上所述调用更新时,控制台日志的输出:

代码语言:javascript
复制
Object {avatar: "https://somevalue.png", name: "Bananaman", .key: "-KDObp8r82Ornrrmfbk5"}
Object "-KDObp8r82Ornrrmfbk5"

浏览器控制台出错:

代码语言:javascript
复制
app.js:28366 Uncaught Error: Firebase.set failed: First argument  contains an invalid key (.key) in property 'employees.-KDObp8r82Ornrrmfbk5'.  Keys must be non-empty strings and can't contain ".", "#", "$", "/", "[", or "]"

我尝试过的东西:

代码语言:javascript
复制
  ref.update(this.state); // same error
  ref.update({this.props.employee['.key']: this.state}); // same error
EN

回答 1

Stack Overflow用户

发布于 2016-03-22 15:31:29

我能够通过硬编码新的状态对象来实现我的预期结果,本质上省略了'.key'...不过,肯定有更好的办法。欢迎您的建议。谢谢!

代码语言:javascript
复制
this.update = () => {
  let updatedEmployee = {avatar: this.state.avatar, name: this.state.name};
  ref.child(this.props.employee['.key']).set(updatedEmployee);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36148382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档