我正在使用json-server模块创建一个从json文件接受POSTS,GET的服务器。
我在POST上看到,数据正在按预期写入JSON文件。在调用另一个对数据起作用的函数之前,我有没有办法等待数据写入?
server.use((req, res, next) => {
if (req.method === 'POST') {
startCol.masterProc();
}
})
masterProc函数适用于json文件,但似乎在数据实际持久存储到json文件之前调用它。这可能是一个nodejs问题,但是你可以帮我实际上在函数调用之前等待持久性吗?
谢谢!
答案 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()