【问题标题】:getting error while using firebase in react for using update function使用firebase响应使用更新功能时出错
【发布时间】:2020-06-30 19:38:16
【问题描述】:

我收到此错误:

错误:Reference.update 失败:第一个参数包含属性“events.-MB5fWOoD9eJkz3EGdI5.at._locale.ordinal”中的函数,内容 = 函数(数字){ var b = 数字 % 10, 输出 = toInt(数字 % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th'; 返回数字+输出; }

这是表格

<form onSubmit={(e) => {
    e.preventDefault();
        if(text) {
            props.startEditEvent(props.match.params.id, {
                title: text,
                at: date,
                note: note
            });
            props.history.push("/");
         }
}}>

这是异步操作:

export const editEvent = (id, changes) => ({
    type: "EDIT_EVENT",
    id,
    changes
});
export const startEditEvent = (id, changes) => {
    return (dispatch) => {
        return database.ref(`events/${id}`)
            .update(changes)
            .then(() => {
                dispatch(editEvent(id, changes))
            })
    }
};

【问题讨论】:

  • 请编辑问题以显示您如何调用此功能(不要提供外部链接)。 changes 到底是什么?错误消息说你正在传递一个函数,这是无效的。

标签: reactjs firebase firebase-realtime-database redux react-redux


【解决方案1】:

错误消息告诉您将函数作为参数的一部分传递给update()。这是无效的。仔细查看错误信息:

第一个参数包含属性 'events.-MB5fWOoD9eJkz3EGdI5.at._locale.ordinal' 中的函数,其内容 = 函数 ...

这是说你有一个路径“events.-MB5fWOoD9eJkz3EGdI5.at._locale.ordinal”,它是一个函数。

我们看不到您的at 属性包含什么,但可以肯定地说您正在传递一些包含方法的对象。那是行不通的。您必须弄清楚您希望 at 的值是什么,然后找出它应该重视的特定字符串、数字或普通对象值。你现在拥有的date 是行不通的。

【讨论】:

  • 感谢您的回答,错误是 at 属性,因为它是从 moment 包返回的,所以我使用 moment(at).valueOf()
猜你喜欢
  • 2019-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 2017-03-27
  • 2017-03-11
相关资源
最近更新 更多