Bonjour,
Me voici confronter à une erreur que je ne comprend absolument pas, j'ai cherché partout sur Internet je ne comprend rien.
Je vous explique : j'ai crée un server node.js avec express, mon but est d'envoyer un user dans ma base mongoDB via POSTMAN.
Voici mon codeMon server.js :
const express = require('express');
const server = express();
const routes = require('./routes')
const mongoose = require('mongoose')
const bodyParser = require('body-parser')
mongoose.Promise = global.Promise;
server.use(bodyParser.json());
server.set('json spaces', 2) // permet de faire un affichage du JSON plus propre.
routes(server)
server.listen(3050,()=>{
console.log("Ecoute sur le port 3050");
mongoose.connect('mongodb://localhost/create_user_test',{
useNewUrlParser : true,
});
mongoose.connection
.once('open',() => console.log('connexion a mongo établie'))
.on('error',(error) => {
console.warn('Warning',error);
});
})
L'index.js de mes routes :
UserController = require("../controllers/user-controller")
module.exports = (server) =>{
// USER
server.get('/users', UserController.readAll)
server.get('/user/:id', UserController.read)
server.post('/user', UserController.create)
server.delete('/user', UserController.delete)
}
Mon user-controllers.js :
const User = require("../models/user")
module.exports = {
readAll(req,res){
User.find().then((users)=>{
res.send(users)
})
},
read(req,res){
const {id} = req.params;
User.findById(id).then((user)=>{
res.send(user)
})
},
create(req,res){
const name = req.body;
const age = req.body;
const poste = req.body;
const salaire = req.body;
const user = new User({name});
user.save().then(()=>{
res.send({result : "Un user ajouté : " + user})
})
},
delete(req,res){
const {id} = req.params;
User.findByIdAndRemove(id).then((user)=>{
res.send(user)
})
}
}
Et mon UserModel :
const mongoose = require('mongoose')
const Schema = mongoose.Schema
const UserSchema = new Schema({
name : String
// age : {type : Number, default : 0},
// fonction : {type : String, default : null},
// salaire : {type : Number, default : 1200}
})
const User = mongoose.model('user',UserSchema)
module.exports = User;
Ce que je rentre dans POSTMAN
En POST sur localhost://user, j'envoie en JSON : { "name" : "Romain" }
Et voici l'erreur que mon server m'affiche :
(node:7728) UnhandledPromiseRejectionWarning: ValidationError: user validation failed: name: Cast to String failed for value "{}" at path "name"
Voilà je pense avoir faire le tour, si quelqu'un peut m'aider sur ce coup là, je lui en serais éternelement reconnaissant :)
Merci bonne journée ou bonne soirée ! :)
Salut,
A la place de :
const user = new User({name});
Essaye :
const user = new User({name: "name"});
EDIT: Je n'avais pas vu que le post datait de 6 mois... Tu as dû trouvé depuis ;)
try this
User
.create({
firstName: firstName,
lastName: lastName,
username: userName, // the property is "username" in model
password: password
}, function (err, user) {
if (err) {
console.log("Error creating User: ", err);
res
.status(400)
.json(err)
} else {
console.log("User Created: ", user);
res
.status(201)
.json(user)
}
})
};