Я создаю приложение для блога с mon goose, node и angular, где задействованы две схемы модели. Один для блогов, а другой для категории. При создании блога категория выбирается из модели категории. Идеальная функциональность должна заключаться в том, что когда пользователь нажимает API создания блога, сначала загружается форма вместе с раскрывающимся списком, в котором существующие списки категорий выбираются с помощью запроса get, а каждый элемент является документом модели категории, имеющей уникальные идентификаторы, созданные с помощью shortId, categoryName, а также mon goose идентификаторы. В раскрывающемся списке выбирается только имя категории. Теперь, когда пользователь заполняет форму и отправляет ее, в функции контроллера узла категория должна сохранить categoryId, а не categoryName, чтобы позже я мог отсортировать несколько блогов с одинаковым categoryId. Но я получаю категорию как неопределенную при создании блога. Но при этом он выдает ошибку на консоли: категория не определена
Модель блога:
const mongoose = require('mongoose')
const Schema = mongoose.Schema;
let blogSchema = new Schema(
{
blogId: {type: String,unique: true,index: true},
title: {type: String,default: ''},
category : {type: Schema.Types.ObjectId, ref: 'Category'},
imagePath: {type: String,default: '' }})
mongoose.model('Blog', blogSchema);
Модель категории:
var mongoose = require('mongoose');
const Schema = mongoose.Schema;
var CategorySchema = new Schema(
{
categoryId: {
type: String,unique: true,index: true},
categoryName: {
type: String,default: ''
}})
mongoose.model('Category', CategorySchema);
Блог Создать функцию контроллера:
let createBlog = (req, res) => {
CategoryModel.findOne({ 'categoryName': req.body.category }, (err, result) => {
if (err) { console.log('Error at finding categoryId ::', err); res.send(err) }
/** If db operation is success findOne will return either document or null, we're only projecting _id */
if (result) {
console.log('ZZZZZ'+result.categoryId)
let blogId = shortid.generate()
let newBlog = new BlogModel({
blogId: blogId,
title: req.body.title,
category: mongoose.Types.ObjectId(result.categoryId), // As result._id will be string needs to convert it to ObjectId()
imagePath: req.file.path
})
newBlog.save((err, result) => {
if (err) { console.log('Error at saving new blog ::', err); res.send(err) }
else { console.log('Successfully saved new blog'); res.send(result) }
})
} else {
console.log('No category found for ::', req.body.category)
res.send('No category found')
}
})
}