2015-03-11 15 views
10

Sembra che definisce il mio schema in questo modo:dovrei usare Schema.Types.ObjectId o Schema.ObjectId Quando si definisce una mangusta schema

var PossessionSchema = new mongoose.Schema({ 
    thing: {type: mongoose.Schema.Types.ObjectId, ref:"Thing"} 
}); 

o in questo modo:

var PossessionSchema = new mongoose.Schema({ 
    thing: {type: mongoose.Schema.ObjectId, ref:"Thing"} 
}); 

Entrambi lavorano. Vedo che la guida mangusta utilizza Schema.Types.ObjectId

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

Ma io sono confuso che sia il lavoro.

Quale deve essere utilizzato per lo schema? E qual è la differenza tra i due?

risposta

7

Non importa. Entrambi sono esattamente gli stessi. Se in effetti lo console.log(mongoose.Schema); è possibile vedere che sia mongoose.Schema.ObjectId sia mongoose.Schema.Types.ObjectId si riferiscono alla stessa identica cosa.

{ [Function: Schema] 
    reserved: { 
    _posts: 1, 
    _pres: 1, 
    validate: 1, 
    toObject: 1, 
    set: 1, 
    schema: 1, 
    save: 1, 
    modelName: 1, 
    get: 1, 
    isNew: 1, 
    isModified: 1, 
    init: 1, 
    errors: 1, 
    db: 1, 
    collection: 1, 
    once: 1, 
    on: 1, 
    emit: 1 
    }, 
    interpretAsType: [Function], 
    Types: { 
    String: { [Function: SchemaString] schemaName: 'String' }, 
    Number: { [Function: SchemaNumber] schemaName: 'Number' }, 
    Boolean: { [Function: SchemaBoolean] schemaName: 'Boolean', '$conditionalHandlers': [Object] }, 
    DocumentArray: { [Function: DocumentArray] schemaName: 'DocumentArray' }, 
    Embedded: [Function: Embedded], 
    Array: { [Function: SchemaArray] schemaName: 'Array' }, 
    Buffer: { [Function: SchemaBuffer] schemaName: 'Buffer' }, 
    Date: { [Function: SchemaDate] schemaName: 'Date' }, 
    ObjectId: { [Function: ObjectId] schemaName: 'ObjectId' }, 
    Mixed: { [Function: Mixed] schemaName: 'Mixed' }, 
    Oid: { [Function: ObjectId] schemaName: 'ObjectId' }, 
    Object: { [Function: Mixed] schemaName: 'Mixed' }, 
    Bool: { [Function: SchemaBoolean] schemaName: 'Boolean', '$conditionalHandlers': [Object] } 
    }, 
    ObjectId: { [Function: ObjectId] schemaName: 'ObjectId' } 
} 
3

Il documentation dice: "Per specificare un tipo di ObjectId, utilizzare Schema.Types.ObjectId nella dichiarazione." ... "o semplicemente Schema.ObjectId per la compatibilità con v2".

Quindi uso "Schema.Types.ObjectId".