2014-06-09 5 views
6

In meinem Schema verwendet werden kann, wenn ich options in metrics : [ { options : {} } ] dann habe ich bekommen:Seltsam Mongoose schema.js Fehler - `options` nicht als Schema Pfadname

/home/one/cloudimageshare-monitoring/project/node_modules/mongoose/lib/schema.js:282 
    throw new Error("`" + path + "` may not be used as a schema pathname"); 
     ^
Error: `options` may not be used as a schema pathname 

Aber wenn ändern options zu jedem anderen Wort ... wie qoptions .... dann geht der Fehler weg. Warum passiert dies?

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var FilesystemSchema = new mongoose.Schema({ 
    timeStamp : { type : Date, index: true }, 
    avaiable : Boolean, 
    status : String, 
    metrics : [ 
     { options : { 
       data : String, 
       type : String, 
       unit : String 
       } 
     }, 
     { freeFiles : { 
       data : Number, 
       type : String, 
       unit : String 
      } 
     }, 
     { total : { 
       data : Number, 
       type : String, 
       unit : String 
      } 
     }, 
     { avail : { 
       data : Number, 
       type : String, 
       unit : String 
      } 
     }, 
     { free : { 
       data : Number, 
       type : String, 
       unit : String 
      } 
     }, 
     { files : { 
       data : Number, 
       type : String, 
       unit : String 
      } 
     }, 
     { used : { 
       data : Number, 
       type : String, 
       unit : String 
      } 
     } 
] 
}); 

module.exports = FilesystemSchema; 

Antwort

20

Mongoose hat eine Reihe von Reserved Schemanamen, die nicht verwendet werden können, mit Mongoose interner Umsetzung in Konflikt zu vermeiden. Die Liste, aus der docs Judgment folgendes als reserviert:

on, emit, _events, db, get, set, init, isNew, errors, schema, options, modelName, collection, _pres, _posts, toObject 

Diese Begriffe in Ihrem Schema sollte vermieden werden!