如何在获取获取后进行发布、放置或删除?

Posted

技术标签:

【中文标题】如何在获取获取后进行发布、放置或删除?【英文标题】:How to make a Post, Put or Delete followed by a get fetch? 【发布时间】:2019-07-20 09:23:36 【问题描述】:

我有一个用 ExpressJS 编写的 API。现在我正在使用 websocket 服务器从该 API 获取数据,但是当我执行一些更新(POST、PUT 或 DELETE)数据库(Postgres)然后是 GET 申请时,我遇到了问题。

我期待 GET 获取返回所有记录的列表,包括我刚刚更新的记录,但不包括新记录。

然后我在我的更新操作和新的 GET 之间添加了一个超时。我知道这不是一个好的解决方案,因为当许多用户同时发送请求时,我定义的超时可能无法正常工作。

client.on('deleteData', (id) =>  

fetch(server+id, 
method: 'DELETE',
)
.then (
setTimeout(function() 
fetch(server)
.then(response => response.json())
.then(//params separated with ,
responseJson =>  
client.emit('getData', responseJson.data)
client.broadcast.emit('getData', responseJson.data) /
console.log(responseJson.data)
console.log("eliminated!")
) , 1000))
.catch((error) =>
console.error(error)
client.emit('getData', error)
))

如果我从我的代码中取出超时,新的更新(在本例中为 DELETE)不会反映在我在下一次 GET 中获得的数据集中。

有人能帮我找到一种方法来等待更新数据可用于下一次 GET 的确切时间吗?

【问题讨论】:

【参考方案1】:

我找到了解决方案,GET 申请应该在 POST 回调中:

client.on('eliminarCliente', (id) =>  
  fetch(server+id, 
  method: 'DELETE',
  )
  .then (response => response.json())
  .then (responseJson => 
    fetch(server)
    .then(response => response.json())
    .then(responseJson =>  
      client.emit('getData', responseJson.data)  
      client.broadcast.emit('getData', responseJson.data)
    )
    .catch((error) =>
    client.emit('getData', error)
    )  
  )
 .catch((error) =>
    client.emit('getData', error)
 )
)

【讨论】:

以上是关于如何在获取获取后进行发布、放置或删除?的主要内容,如果未能解决你的问题,请参考以下文章

获取后如何取消设置(删除)集合元素?

如何在放置事件jquery上获取放置项目的ID

允许用户放置、获取、删除和修改权限的 S3 策略

如何添加多个视图和删除视图并在删除后从视图中获取所有数据?

创建后如何获取项目的高度?

如何在本地反应中获取坐标并按城市名称放置标记?