Дождитесь записи данных в 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();
  }
})
Другие вопросы по тегам