Ошибка говорит о том, что у вас express пытается ответить с заголовком (в стиле "Статус 200" - все ок).
Проблема в том, что у вас уже был ответ, и еще раз ответить он не может. Дословно: не могу установить заголовки, после того, как они отправлены.
Решение, всегда использовать ключевое слово return, когда вы "отвечаете". В вашем примере это либо res.json, либо next. Суть в этом.
Пример из api:
Если убрать return, то в случае ошибки, мы попадем в if (err) ..., ответим как ошибка(400), и не выйдем из роутинг функции, пойдем ниже и ответим как успешно(200) - и бам-с, получим ошибку - не могу установить заголовки...