Я новичок в сообществе разработчиков и express. Я создаю приложение для обзора кафе в качестве любимого проекта. Я использую express framework mongoDB с mon goose. Я могу сохранить один объект в документе, но когда дело доходит до сохранения нескольких объектов, я не могу понять это. Я получаю ошибку проверки Проверка кафе не удалась: имя: Ошибка приведения к строке для значения "['Cafe X', 'Cafe Y']" "по пути" имя " для всех ключей. Затем я попробовал функцию insertMany, но затем я получаю сообщение об ошибке cafe.insertMany не является функцией . Я думаю, что я должен вставить кафе как массив объектов, но как я могу получить его в массив объектов? Может быть, кто-то может указать мне правильное направление?
Схема определяется в кафе следующим образом. js file:
const mongoose = require('mongoose');
const cafeSchema = new mongoose.Schema({
name: {
type: String,
trim: true,
required: true
},
chef: {
type: String,
trim: true
},
city: {
type: String,
required: true,
max: 32,
trim: true
},
rating: {
type: Number,
required: true
},
contactNumber: {
type: String,
trim: true,
required: true
}
});
module.exports = mongoose.model('Cafe', cafeSchema);
Файл маршрутов выглядит следующим образом:
var express = require('express');
var router = express.Router();
const cafeController = require('../controllers/cafeController');
/* GET home page. */
router.get('/', cafeController.addCafeGet);
router.post('/', cafeController.addCafePost);
module.exports = router;
Элемент cafeController работает следующим образом: он отлично работает для одного объекта:
const Cafe = require('../models/cafe');
exports.addCafeGet = (req, res) => {
res.render('index', { title: 'Add Restourant' });
};
exports.addCafePost = async (req, res, next) => {
try {
const cafe = new Cafe(req.body);
await cafe.save();
res.json(cafe);
} catch (error) {
next(error);
}
};
В html пользователь / администратор добавляет кафе. На более позднем этапе они смогут добавлять больше кафе одновременно, например, у меня их только два.
form(action="", method="post")
ul
li
input(type="text" name='name' placeholder='name')
li
input(type="text" name='city' placeholder='City')
li
input(type="text" name='chef' placeholder='Chef')
li
select#rating(name="rating")
option(value="1") 1
option(value="2") 2
option(value="3") 3
option(value="4") 4
option(value="5") 5
li
input(type="text" name='contactNumber' placeholder='Contact number')
ul
li
input(type="text" name='name' placeholder='name')
li
input(type="text" name='city' placeholder='City')
li
input(type="text" name='chef' placeholder='Chef')
li
select#rating(name="rating")
option(value="1") 1
option(value="2") 2
option(value="3") 3
option(value="4") 4
option(value="5") 5
li
input(type="text" name='contactNumber' placeholder='Contact number')
button(type="submit") SAVE
Я планирую использовать и интерфейс на другом этапе, но не правильно сейчас же.