2015-03-11 10 views
10

Mongoose Wydaje się, definiując w ten sposób mój schematu:powinienem stosować Schema.Types.ObjectId lub Schema.ObjectId podczas definiowania schematu

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

lub w ten sposób:

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

Zarówno praca. Widzę, że prowadnica mangusta wykorzystuje Schema.Types.ObjectId

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

Ale jestem zdezorientowany, że zarówno do pracy.

Którego należy użyć do schematu? I jaka jest różnica między tymi dwoma?

Odpowiedz

7

To nie ma znaczenia. Oba są dokładnie takie same. Jeśli faktycznie jesteś console.log(mongoose.Schema);, możesz zobaczyć, że zarówno mongoose.Schema.ObjectId, jak i mongoose.Schema.Types.ObjectId odnoszą się do dokładnie tego samego.

{ [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

The documentation mówi: „Aby określić typ objectID użyć Schema.Types.ObjectId w swoim oświadczeniu.” ... „lub po prostu Schema.ObjectId dla wstecznej kompatybilności z v2”.

Używam więc "Schema.Types.ObjectId".

Powiązane problemy