使用 axios 向 firebase 实时数据库发送 put 请求时可以合并数据吗?

Can I merge data when sending put request to firebase realtime database using axios?

我可以像这样使用 axios 在 Firebase 实时数据库中更新我的数据:

axios.put('/blogposts/' + postId + '.json', post, {headers: {'Content-Type': 'application/json'}}).then(response => {
  res.status(200).send(json.stringify(response.data));
}).catch(err => {
  res.status(500).send('error putting blog post.');
});

但是 post 看起来像这样:

{
  title: '...',
  body: '...'
}

和数据库中的 posts 看起来像这样:

{
  title: '...',
  body: '...',
  createdAt: 123,
  updatedAt: 123
}

在放置 post 之前,我给它一个 updatedAt 标记:

post.updatedAt = Date.now();

然后我使用上面的 axios 调用放置 post。

在数据库中,post 最终看起来像这样:

{
  title: '...',
  body: '...',
  updatedAt: 123
}

createdAt 已消失。

我想知道是否有一个配置设置告诉 Firebase 不要覆盖整个 post,而是一个接一个地覆盖每个字段,这样标题就会被覆盖,body 就会被覆盖,updatedAt被覆盖,但 createdAt 保持不变。我相信这称为合并,但是将 merge:true 添加到配置 object 并不能满足我的要求。

有没有办法做我想做的事,或者更新后的 object 是否总是必须包含旧 object 的每个字段,即使该字段没有更新?

谢谢。

要将您写入的数据与 REST 请求中该位置的现有数据合并,use the PATCH verb。来自这个例子:

curl -X PATCH -d '{
  "nickname": "Alan The Machine"
}' 'https://docs-examples.firebaseio.com/rest/saving-data/users/alanisawesome.json'

在 Axios 中似乎翻译成 axios.patch(...)