У меня странное поведение в моем приложении сервера express / node / mongodb, кажется, что только когда я вызываю запрос PUT с помощью метода findOneAndReplace, этот выглядит пустым.
На самом деле у меня есть это сообщение об ошибке для метода проверки:
здесь код:
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const app = express();
const methodOverride = require('method-override');
const session = require('express-session');
const passport = require('passport');
const logger = require('morgan');
const cors = require('cors');
//MODEL
const Clienti = require('./model/clienti');
app.use(bodyParser.urlencoded({limit: '10mb', extended: false}));
app.use(methodOverride('_method'));
app.use(bodyParser.json({limit: '10mb'}));
//UPDATE
app.put('/api/aggiorna_cliente/:id', function(req, res, next) {
console.log(JSON.stringify(req.body)) --> N.B. i have the correct body rendition here
console.log(JSON.stringify(req.params.id))
Clienti.findOneAndReplace(
{ _id:req.params.id },
{
address:req.body.address,
brand:req.body.brand,
cap:req.body.cap,
city:req.body.city,
civico:req.body.civico,
email:req.body.email,
fiscalcode:req.body.fiscalcode,
provincia:req.body.provincia,
utente:req.body.utente
},
function (err, post) {
if (err) return next(err);
res.json(post);
});
});
здесь CLIENTI model const mon goose = require ('mon goose');
const clientiSchema = mongoose.Schema({
utente:{
type: String,
required:true
},
cap:{
type: Number,
required:true
},
civico:{
type: String,
required:true
},
city:{
type: String,
required:true
},
address:{
type: String,
required:true
},
fiscalcode:{
type:String,
required:true
},
email:{
type:String,
required:true
},
brand:{
type:String,
required:true
},
provincia:{
province: String,
sigle: String
}
});
const Clienti = mongoose.model('Clienti',clientiSchema);
module.exports = Clienti
как вы можете видеть, почти все поля являются «обязательными», что вызывает проблему проверки на картинке выше.
Но если я удалю поле rquired, все данные будут пустыми (кроме id)
последний способ, которым я использую службу в angular
updateCustomer(customer){
let headers = new Headers();
headers.append('Content-Type', 'application/json');
return this.http.put(this.UpdateCustomer+'/'+customer._id, JSON.stringify(customer), {headers: headers})
.map((response: Response) => response.json())
}
что это может быть?
Спасибо за ваше время