Отправить несколько данных на nodejs в mongodb с помощью почтальона - PullRequest
0 голосов
/ 21 июня 2020

Итак, я хотел бы отправить несколько данных (json) с помощью почтальона. например у меня есть два данных json. Я хочу отправить этот json на mongodb, используя почтальона одновременно. Но у меня возникла ошибка

SyntaxError: Unexpected token , in JSON at position 168<br> and so on.

Поэтому я попытался перенести этот объект в массив. И я получил ошибку

Products validation failed: title: Path `title` is required., type: Path `type` is required., description: Path `description` is required., filename: Path `filename` is required., price: Path `price` is required., rating: Path `rating` is required.

Я уверен, что все данные заполнены.

Моя цель Я хочу отправить много данных json вот так. Не один или два. Примерно десять или больше, но отправьте только один раз.

Пример json Я хочу отправить mongodb

{
  "title": "Asparagus",
  "type": "vegetable",
  "description": "Asparagus with ham on the wooden table",
  "filename": "2.jpg",
  "price": "18.95",
  "rating": "3"
}, {
  "title": "Green smoothie",
  "type": "dairy",
  "description": "Glass of green smoothie with quail egg's yolk, served with cocktail tube, green apple and baby spinach leaves over tin surface.",
  "filename": "3.jpg",
  "price": "17.68",
  "rating": "4"
}

схема

const productSchema = new mongoose.Schema({
    title: {type: String, required: true},
    type: {type: String, required: true},
    description: {type: String, required: true},
    filename: {type: String, required: true},
    price: {type: Number, required: true},
    rating: {type: Number, required: true},
    date: {type: Date, default: Date.now}
});

Маршруты (почтовый маршрут)

const Product = require('../models/product.js');
routes.post('/', async (req, res) => {
  const product = new Product({
    title: req.body.title,
    type: req.body.type,
    description: req.body.description,
    filename: req.body.filename,
    price: req.body.price,
    rating: req.body.rating
  });
  try {
    const new_product = await product.save();
    return res.status(201).json(new_product);
  }catch(err){
    return res.status(400).json({error: err.message});
  }
});

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Вам нужно будет отправить JSON в виде массива.

[{
  "title": "Asparagus",
  ...
}, {
  "title": "Green smoothie",
  ...
}]

Тогда вы можете получить к нему доступ следующим образом:

req.body.forEach(item => {
  // do something with item
})
0 голосов
/ 21 июня 2020

Приношу извинения, если вы подумали об этом, но можно передать массив в Postman, а затем иметь свой маршрут .forEach для элементов массива для хранения в базе данных. чтобы сначала проверить, является ли это массивом, если вы иногда хотите отправить один объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...