在我的数据库中,我有一个名为lock
的对象。目前,你可以(几乎,我以某种方式打破它)用我的axios put请求更新锁定设置。但是在lock
对象中有一个名为controller
的键,它有一个objectId。我还有另一个名为controller
的对象,其中包含我需要能够更新的内容(来自相同的put请求)。
我确保我将正确的lock
与正确的controller
匹配,但我似乎无法让我的投放请求生效。
在我的React应用中,我有这个(item = lock | I need to rename it
):
<DoorSettingsForm
onSubmit={updateSettings}
item={location.state.door}
id={location.state.door._id}
controller={location.state.controller}
/>
DoorSettingsForm
组件包含三个道具,其中一个是函数updateSettings
。在同一个文件夹中我有这个:
const mapDispatchToProps = dispatch => {
return {
updateSettings: (id, item, controller) =>
dispatch(updateSettings(id, item, controller))
}
}
我的行动:
export function updateSettings(id, updatedValues) {
return (dispatch, getState) => {
const state = getState()
let item
state.fetchDoors.doors.forEach(val => {
if (val._id === id) item = val
})
const payload = { item: merge({}, item, updatedValues) }
axios
.put(`${settings.hostname}/locks/${id}`, payload.item)
.then(res => {
console.log('updatedValues', updatedValues)
dispatch({
type: 'SETTINGS_UPDATED',
payload
})
})
.catch(err => console.log(err))
}
}
现在,当我尝试发送此请求时,我只获得锁的id
,而不是我想要的其他值。当我console.log('updatedValues', updatedValues)
时,我可以看到我改变的所有价值观。所以我想知道我的行为有什么问题?
感谢阅读!