Este es un problema extraño que he estado viendo. Tengo un esquema de mongoose usando mongoose-i18n-localize:
var mongoose = require('mongoose'); var mongooseI18n = require('mongoose-i18n-localize'); var Schema = mongoose.Schema; var TestSchema = new Schema({ id: String, active: {type: Boolean, default: false}, name: {type: String, required: true, i18n: true} }); TestSchema.plugin(mongooseI18n, { locales: ['en_US'] }); module.exports = mongoose.model('Test', TestSchema);En mi llamada tengo esto:
app.put('/test/:id', function(req, res) { var query = {'id': req.params.id); var test = req.body; Test.findOneAndUpdate(query, test, function(err,p) { if (err) { handleError(res, err.message, "Failed to get information"); console.log(err); } else { res.json(p); } }) });y pasé estos datos:
http://localhost:123/test/1d { "active": true, "name": { "en_US": "test" } }Puedo cambiar activo a verdadero y falso sin problema. Pero el nombre nunca cambia cuando hago un cambio. Además, no recibo ningún error, simplemente no se actualiza. ¿Alguien ha visto esto antes o sabe cómo solucionarlo para que pueda localizarlo?
Debe enviar el cuerpo usando notación de puntos en lugar de corchetes. Funcionó para mí de esta manera:
{ "active": true, "name.en_US": "test" }