Дождитесь записи данных в POST на json-сервере nodejs
Я использую модуль json-server для создания сервера, который принимает POSTS, GET из файла json.
Я вижу, что на POST данные записываются в файл JSON, как и ожидалось. Есть ли способ для меня, чтобы ждать записи данных, прежде чем вызывать другую функцию, которая действует на данные?
server.use((req, res, next) => {
if (req.method === 'POST') {
startCol.masterProc();
}
})
Функция masterProc работает с файлом json, но, кажется, она вызывается до того, как данные фактически сохраняются в файле json. Это может быть вопрос nodejs, но не могли бы вы помочь мне с фактическим ожиданием сохранения перед вызовом функции?
Спасибо!
1 ответ
Промежуточное программное обеспечение, которое вы создали, перехватывает запрос до того, как он попадает в ваш db.json, поэтому при вызове startCol.masterProc()
данных еще нет.
Я считаю, что вам нужно пропустить запрос (то есть удалить 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();
}
})