等待在nodejs json-server

时间:2018-03-27 23:06:05

标签: node.js nodes json-server

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

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

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

masterProc函数适用于json文件,但似乎在数据实际持久存储到json文件之前调用它。这可能是一个nodejs问题,但是你可以帮我实际上在函数调用之前等待持久性吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您创建的中间件会在请求到达db.json之前拦截请求,这就是为什么在调用async function fetchAll(url) { return Promise.all( url.map( async (n) => fetch(n).then(r => r.json()) ) ); } fetchAll([...]) .then(d => console.log(d)) .catch(e => console.error(e)); Will this work for you? 时数据尚未存在的原因。

我相信您需要让请求通过(即删除startCol.masterProc())并将您的代码放入router.render()方法中,如下所示:

server.use()

但出于好奇,如果您在服务器上拨打const router = jsonServer.router('db.json') router.render = (req, res) => { if (req.method === 'POST') { startCol.masterProc(); } } 会发生什么情况。请在拨打next()之前使用?像这样:

startCol.masterProc()