2015-03-11 8 views
10

Es scheint, wie mein Schema auf diese Weise definieren:Sollte ich Schema.Types.ObjectId oder Schema.ObjectId Wenn ein Mungo-Schema definieren

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

oder so:

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

Beide arbeiten. Ich sehe, dass der Mungo Handbuch verwendet Schema.Types.ObjectId

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

Aber ich bin verwirrt, dass beide arbeiten.

Welche sollte für das Schema verwendet werden? Und was ist der Unterschied zwischen den beiden?

Antwort

7

Es spielt keine Rolle. Beides ist genau das Gleiche. Wenn Sie tatsächlich console.log(mongoose.Schema); können Sie sehen, dass sowohl mongoose.Schema.ObjectId als auch auf die gleiche Sache beziehen.

{ [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 sagt: "Um eine Art von ObjectId verwendet Schema.Types.ObjectId in Ihrer Erklärung angeben." ... "oder einfach nur Schema.ObjectId für die Abwärtskompatibilität mit v2".

Also verwende ich "Schema.Types.ObjectId".

Verwandte Themen