0

我正在使用 json-server 模块来创建一个接受 POSTS、GET 来自 json 文件的服务器。

我在 POST 上看到,数据正按预期写入 JSON 文件。有没有办法让我在调用另一个作用于数据的函数之前等待数据被写入?

server.use((req, res, next) => {
      if (req.method === 'POST') {          
            startCol.masterProc();
      }
})

masterProc 函数在 json 文件上工作,但它似乎在数据实际持久化到 json 文件之前被调用。这可能是一个 nodejs 问题,但是您能帮我在函数调用之前实际等待持久性吗?

谢谢!

4

1 回答 1

1

您创建的中间件会在请求到达您的 db.json 之前拦截请求,这就是为什么调用startCol.masterProc()数据时尚未出现的原因。

我相信您需要让请求通过(即 remove server.use())并将您的代码放在 router.render() 方法中,如下所示:

const router = jsonServer.router('db.json')
router.render = (req, res) => {
  if (req.method === 'POST') {          
    startCol.masterProc();
  }      
}

但是出于好奇,如果您next()在调用之前调用 server.use会发生什么startCol.masterProc()?像这样:

server.use((req, res, next) => {
  next();
  if (req.method === 'POST') {          
    startCol.masterProc();
  }
})
于 2018-04-24T16:53:42.197 回答