2016-09-27 3 views
0
var categoryList = new Referral({categoryList : category}); 

    categoryList.pre('save', function (next) { 
     Referral.find({categoryList : category}, function (err, docs) { 
      if (!docs.length){ 
       next(); 
      }else{ 
       console.log('Data exists: ', category); 
       next(new Error("Data exists!")); 
      } 
     }) 
    }) 

Verweis ist meine Variable, die meinem Schema zugewiesen ist. Category ist das ObjektNodejs Middleware .pre zeigt keine Funktion

dies ein Fehler zu ändern gibt

TypeError: categoryList.pre is not a function at D:\Aventyn\ClipCare_v2\app\api.js:112:18 at Layer.handle [as handle_request] (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\layer.js:95:5) at next (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\route.js:131:13) at Route.dispatch (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\layer.js:95:5) at D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:277:22 at Function.process_params (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:330:12) at next (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:271:10) at Function.handle (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:176:3) at router (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:46:12) at Layer.handle [as handle_request] (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:312:13) at D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:280:7 at Function.process_params (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:330:12) at next (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:271:10) at D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:618:15

Antwort

2

Versuchen:

categoryList.pre('save', function (next) { 
    // ... 
}) 

zu:

categoryList.schema.pre('save', function (next) { 
    // ... 
}) 

Die .pre() ist eine Methode des Mungo-Schema, nicht ein Model.

+0

Wenn ich die categoryList.schema.pre ('speichern', Funktion (nächste) { // ... }) Es wird nur geladen und es zeigt keinen Fehler in der Serverkonsole. – Vignesh

0

Middleware (wie pre Hooks) sind Teil eines Schemas. Es sieht so aus, als ob Sie versuchen, es in einem einzigen Dokument zu verwenden. So funktioniert das nicht.

Stattdessen verwenden sie für das Schema, das Sie das Referral Modell zu erstellen:

ReferralSchema.pre('save', ...); 

Dies bedeutet, dass die Pre Haken alle Dokumente dieses Schema angewendet wird.

+0

Während die Daten von AngularJS zu mongodb mit Hilfe von Mungotieren, kann **. Pre ** verwendet werden, um Duplikate in Mongodb zu überprüfen? – Vignesh

+0

@Vignesh nicht zuverlässig, nein. Sie sollten wahrscheinlich [eindeutige (spärliche) Indizes] (https://docs.mongodb.com/manual/core/index-unique/) verwenden, um die Eindeutigkeit bestimmter Felder zu gewährleisten. – robertklep

+0

Danke! Unique Index hat meine Arbeit reduziert – Vignesh

Verwandte Themen