Error relacionando modelos con Mongoose
Publicado por liantony (1 intervención) el 03/04/2019 04:09:32
Estoy intentando hacer una base de datos noSQL de una tienda de libros. Cuando estoy definiendo el esquema de libros, intento relacionar ese modelo con otro modelo ya creado y obtengo un error en consola.
Lo que trato de hacer es salvar la información proveniente del frontend del libro pero la información del autor, y genero guardarla con un id diferente pero que estén relacionados con el modelo de libro.
cuando intento mandar los datos al servidor obtengo este error como si no pudiera relacionar los datos
Error:
modelos
controlador
Lo que trato de hacer es salvar la información proveniente del frontend del libro pero la información del autor, y genero guardarla con un id diferente pero que estén relacionados con el modelo de libro.
cuando intento mandar los datos al servidor obtengo este error como si no pudiera relacionar los datos
Error:
1
2
3
{
error: "Books validation failed: author: Cast to ObjectID failed for value "Dan Brown" at path "author", genre: Cast to ObjectID failed for value "Techno-thriller" at path "genre""
}
modelos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const mongoose = require('mongoose');
const bookSchema = new mongoose.Schema({
name: {
type: String,
required: 'Name is required',
},
author: {
type: mongoose.Schema.ObjectId,
ref: 'Author',
//required: 'Author is required',
},
numberInStock: {
type: Number,
default: 0,
},
image: {
type: String,
default: '/path/to/default/image.png',
},
genre: {
type: mongoose.Schema.ObjectId,
ref: 'Genre',
//required: 'Genre is required',
},
});
module.exports = mongoose.model('Books', bookSchema);
1
2
3
4
5
6
7
8
9
10
11
12
const mongoose = require('mongoose');
const authorSchema = new mongoose.Schema({
name: {
type: String,
// trim: true,
required: 'Please enter a Author name',
},
});
module.exports = mongoose.model('Author', authorSchema);
1
2
3
4
5
6
7
8
9
10
11
12
const mongoose = require('mongoose');
const genreSchema = new mongoose.Schema({
name: {
type: String,
// trim: true,
required: 'Please enter a Genre name',
},
});
module.exports = mongoose.model('Genre', genreSchema);
controlador
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const express = require('express');
const Books = require('../models/books');
const create = (req, res, next) => {
if (!req.body) {
return res.status(400).json({
error: 'No data received',
});
}
const book = new Books(req.body); // <= supongo que los campos en el body del request corresponden con los campos del modelo
book.save((err, result) => {
if (err) {
return res.status(400).json({
error: err.message,
});
}
return res.status(201).json({
message: 'Book created succesfully',
result,
});
});
};
module.exports = { create };
Valora esta pregunta


0