как реализовать joi-валидатор с использованием node js и mongodb

#node.js #joi

#node.js #joi

Вопрос:

Я попробовал crud-операцию с использованием nodejs и mongodb. Он работает нормально, но как проверить данные с помощью joi validator.Я не знаю, как добавить код проверки joi в node js, подключающий mongodb.

product.js

 const Joi = require('joi');
 router.post('/', async (req, res) => {
    (async function() {
        try {
          await client.connect();
          console.log("Connected correctly to server");
          const db = client.db('olc_prod_db');

          let r = await db.collection('Ecommerce').insertOne(req.body);
          assert.equal(1, r.insertedCount);
          res.send("Inserted Sucessfully")
          client.close();
        } catch(err) {
          console.log(err.stack);
        }
      })();

  });
  

Ответ №1:

Пример проверки тела экспресс-запроса:

 const Joi = require('joi');

const validateRequest = (schema) => async (req, res, next) => {
    const { error } = Joi.validate(req.body, schema);

    if (error) {  
      throw new Error(error);
    }

    return next();
  };

const validatinSchema =  Joi.object().keys({
    firstName:  Joi.string().required(),
    lastName: Joi.string().required(),
  }),

router.post('/', validateRequest(validationSchema), async (req, res) =>
 // rest of your code
  

Комментарии:

1. Можете ли вы дать мне, как добавить код joi в мой код, можете ли вы дать мне предложение.

2. Пожалуйста, внимательно посмотрите на код, который я предоставил router.post('/', validateRequest(validationSchema), async (req, res) => // rest of your code goes here

3. У меня есть еще одно сомнение. Я попытался получить данные в mongodb с помощью node js. но я получил только одни данные. его ошибка из-за невозможности установить заголовки после их отправки. Я перепробовал много способов. но я все еще сталкиваюсь с этой проблемой. как решить эту проблему, есть предложения

4. мой код БД позволяет r = await db.collection(‘Электронная коммерция’).find(); r.forEach(функция (результат, ошибка) { res.send(результат) })

5. не могли бы вы создать новый вопрос с кодом и стеком ошибок, а затем дать мне ссылку на новый вопрос