#node.js #mongoose
#node.js #Мангуст
Вопрос:
теперь мои функции работают корректно, когда я пытаюсь создать или обновить документ с помощью mongoose из-за ошибки:
Ошибка типа Uncaught Error: не удается установить свойство ‘undefined’ для undefined в createCategory (/home/bell/workspace/panel-screen/controllers/CategoryController.js:21:21) в processTicksAndRejections (internal/process/task_queues.js:86:5)
const createCategory = async (req, res) => {
res.setHeader('Content-Type', 'application/json');
let err, category;
console.log(req.body)
[err, category] = await to(Category.create({
name: req.body.name,
lang: req.body.lang,
}))
if (err) return ReE422(res, err);
return ReS(res, category)
}
module.exports.createCategory = createCategory;
Я даже переустановил анализатор тела. это мое тело:
{ name: 'foo', lang: 'en' }
Комментарии:
1. Есть ли какая-то причина, по которой вы просто не делаете
try { let category = await Category.create(({ name, lang }) => ({ name, lang }))(req.body)); return ReS(res, category) } catch (e) { return Re422(res, e); }
? Или вы просто не понимали, что можете сделать это в машинном коде, и предположили, что вам нужна какая-то непонятная библиотека? Говоря о «родном», естьres.json(category)
, который также делает это иsetHeader
для вас.2. да, to — это сокращение от promise : to = function (promise) { return promise .then(data => { return [null, data]; }).catch(ошибка => [{ сообщение: err.message, код: err.code }]); }; @NeilLunn если ошибка поступает из базы данных, она заполняет ее. и для моего ответа я создал функции. там я передаю возврат json
3. Итак, что я подразумеваю под «не осознавал», так это то, что я написал там, сокращенно и изначально для
Promise
разрешения. Вы, похоже, прочитали чей-то блог и подумали, что этоto
что-то новое. Это не так. Современный код может быть написан так, как я сделал в комментарии.4. Я не думаю, что этот синтаксис беспокоит мою проблему? не так ли? Я выбираю этот синтаксис для обработки моих ответов с меньшим количеством кода. Я не получил его ни из одного сообщения в блоге. я прочитал несколько советов о том, как лучше обрабатывать функции promise . поэтому я подумал, что было бы лучше обращаться с ними так. потому что я не пишу свои ответы снова и снова в каждом контроллере, который я написал. sry, может быть, я ошибаюсь, может быть, это старый стиль или то, что вы сказали, взято из другого блога. но он работает нормально.