На основании вашего примера кода я не уверен, что вы пытаетесь сделать. Когда вы используете модель и пытаетесь ее создать, вы можете воспринимать ее как новую особенную запись. Если вы пытаетесь вставить много ссылок в одну запись, я бы предложил разделить их запятыми, а затем вставить их в MongoDB.
Но вы не можете выполнять итерации внутри своего класса Posts.
Если я если бы вы, я бы настроил свой файл примерно так:
file: models / Post. js:
const mongoose = require('mongoose');
const PostSchema = new mongoose.Schema({
text: {
type: String,
trim: true,
required: [true, 'Please add some text']
},
link: {
type: String,
required: [true, 'Please add link']
},
createdAt: {
type: Date,
default: Date.now
}
});
module.exports = mongoose.model('Post', PostSchema);
Затем создайте файл контроллера js file: controllers / posts . js:
const Post = require('../models/Post');
// @desc Add Post
// @route POST /api/v1/posts
// @access Public
exports.addPost = async (req, res, next) => {
try {
// get post data from the request
// mongo returns a promise so await on it
const post = await Post.create(req.body);
return res.status(201).json({
success: true,
data: post
});
} catch (err) {
if(err.name === 'ValidationError') {
const messages = Object.values(err.errors).map(val => val.message);
return res.status(400).json({
success: false,
error: messages
});
} else {
return res.status(500).json({
success: false,
error: 'Server Error'
});
}
}
}
, затем в файле роутера вы можете использовать свой контроллер: маршруты / пост. js
const express = require('express');
const router = express.Router();
const { addPost } = require('../controllers/posts');
router
.route('/')
.post(addPost);
module.exports = router;