node.js - tutorial - In che modo "mangusta" gestisci l'aggiunta di documenti che hanno FIELDS che sono__NOT__ parte dello schema?




mongoose tutorial (2)

Mongoose ti consente di aggiungere middleware "validator" e "pre" che svolgono funzioni utili. Ad esempio, è possibile specificare l'attributo required nello schema per indicare che è necessario impostare una proprietà specifica. Puoi anche specificare un validator che puoi creare per generare un errore se la proprietà associata non soddisfa le tue specifiche. È inoltre possibile impostare un "pre" validator Mongoose che esamina il documento e genera un errore se trova campi esterni allo schema. Avendo la tua chiamata middleware next() (o no), puoi decidere se procedere al salvataggio del documento (o meno).

Questa question/response sullo stackoverflow può aiutare a capire se un oggetto ha o meno una proprietà.

Sto giocando con la guida rapida per la mangusta.

http://mongoosejs.com/docs/index.html

Supponevo che avrebbe generato un errore quando ho salvato un documento con un campo NON definito nello schema. Invece, ha creato un nuovo documento nella raccolta ma senza campo. (Nota: mi rendo conto che mongodb stesso è "schema-less", quindi ogni documento in una collezione può essere completamente diverso l'uno dall'altro).

due domande

  1. In che modo mongoose gestisce l'aggiunta di documenti con campi che NON fanno parte dello schema? Sembra che li ignori e, se nessuno dei campi mappa, creerà un documento vuoto solo con un ObjectId.
  2. E come si fa a mongoose ad avvisarti se un campo specifico di un documento non è stato aggiunto anche se il documento è stato salvato con successo?

(La domanda è - credo - abbastanza semplice, quindi non ho aggiunto il codice, ma lo farò sicuramente se qualcuno lo richiede).

Grazie.


D: In che modo Mangusta gestisce l'aggiunta di documenti con campi che NON fanno parte dello schema?

L'opzione strict, (abilitata per impostazione predefinita), garantisce che i valori passati al nostro costruttore del modello che non sono stati specificati nel nostro schema non vengano salvati nel db. - documenti di mangusta

D: Come si fa a Mangusta ad avvisare se un campo specifico di un documento non è stato aggiunto anche se il documento è stato salvato con successo?

L'opzione strict può anche essere impostata su "throw" che causerà errori da produrre invece di eliminare i dati non validi. - documenti di mangusta

... ma se hai assolutamente bisogno di salvare chiavi che non sono nello schema, allora devi gestirlo da solo. Due approcci a cui posso pensare sono:

1. Per salvare chiavi che non si trovano nello schema, è possibile impostare strict su false su un'istanza di modello specifica o su un aggiornamento specifico . Quindi, è necessario scrivere una convalida secondo cui (a) i valori nel documento sono conformi ai propri standard e (b) il documento salvato nel database corrisponde al documento inviato.

2. È possibile vedere se il tipo di schema Misto può soddisfare le proprie esigenze invece di disabilitare le convalide che vengono fornite con strict . (Scorri verso il basso fino a "note di utilizzo" su quel collegamento, poiché il collegamento alla documentazione "Mista" sembra interrotto per il momento.)





mongoose