Quiero encontrar un documento en mi base de datos y reemplazarlo con un documento que tenga un nuevo nombre y una nueva clave.
Aquí está mi esquema
const Schema = mongoose.Schema; const vampireSchema = new Schema({ name: { type: String, required: true }, title: String, hair_color: {type: String, default: "blonde" }, eye_color: String, dob: Date, loves: [String], location: String, gender: String, victims: {type: Number, min: 0} }); const Vampire = mongoose.model("Vampire", vampireSchema); module.exports = Vampire;Aquí está mi código ejecutable
Vampire.findOneAndReplace( { name: "Claudia" }, { name: "Eve", portrayed_by: "Tilda Swinton" }, (err, vamp) => { if(err){ console.log(err) } else{ console.log(vamp) } db.close() })Hay dos problemas que puedo ver.
Primero, debe pasar nulo como el tercer argumento en su llamada findOneAndReplace. Esto establecerá las opciones en nulo y debería hacer que su código se ejecute. En mi opinión, este es un comportamiento extraño de la mangosta.
Vampire.findOneAndReplace( { name: "Claudia" }, { name: "Eve", portrayed_by: "Tilda Swinton" }, null, (err, vamp) => { if(err){ console.log(err) } else{ console.log(vamp) } db.close() })En segundo lugar, recomendaría agregar retratado_por al esquema, de lo contrario, ese campo no estará en el documento recién creado. Por lo tanto, ajustaría su esquema de esa manera:
const vampireSchema = new Schema({ name: { type: String, required: true }, title: String, hair_color: {type: String, default: "blonde" }, eye_color: String, dob: Date, loves: [String], location: String, gender: String, victims: {type: Number, min: 0}, portrayed_by: String });