it-swarm.com.de

Feld hinzufügen, das nicht im Schema mit Mungo ist

Ich versuche, einem Dokument ein neues Feld hinzuzufügen, aber das funktioniert nicht:

Erstellen eines UserModel-Prototyps:

model = require("../models/user")
UserModel.prototype.findOneAndUpdate = function(query, params, cb) {
   model.findOneAndUpdate(query, params, { returnNewDocument: true, new: true }, function(err, data) {
      if (!err) {
         cb(false, data);
      } else {
         cb(err, false);
      }
   });
};

Dann rufe ich es an

userFunc = require("../../model_functions/user")

userFunc.findOneAndUpdate({
                  "email.value": userEmail
            }, {
                  $set: {"wat":"tf"}
            },
            function (err, updatedUser) {
                  //This logs the updated user just fine, but the new field 
                  is missing
                  console.log(updatedUser);

                  ...
            }
      );

Dies aktualisiert jedes Feld erfolgreich, solange es existiert, aber es wird kein neues hinzugefügt.

7
LuisEgan

Sie können Felder im Schema mit der Option { strict: false } hinzufügen und entfernen.

option: streng 

Die Option strict (standardmäßig aktiviert) stellt sicher, dass Werte an .__ übergeben werden. Unser Modellkonstruktor, der nicht in unserem Schema angegeben wurde, erhält nicht in der DB gespeichert.

var thingSchema = new Schema({..}, { strict: false });

Sie können dies auch in der Aktualisierungsabfrage tun

Model.findOneAndUpdate(
  query,  //filter
  update, //data to update
  { //options
    returnNewDocument: true,
    new: true,
    strict: false
  }
)

Sie können die Dokumentationen überprüfen hier

6
Anthony Winzlet

Sie können neue Felder im Schema User mit .add hinzufügen 

require('mongoose').model('User').schema.add({fullName: String});

Vielen Dank.-

0
Alvaro

Zitieren JonathanLonowski

Das ODM wurde entwickelt, um das von Ihnen definierte Schema zu erzwingen, um zu überprüfen, ob jede Eigenschaft gehört, und die anderen zu verwerfen.

Um Felder mit mongoose zu aktualisieren, muss das Feld im Modellschema vorhanden sein.

0
LuisEgan