2017-08-10 2 views
0

Lorsque vous créez un schéma pour la collecte et l'insertion de document avec le type objectId (en le convertissant en String), vous obtenez une erreur de type Undefined.Schéma Mongoose TypeError: Type indéfini `ObjectId` at. Avez-vous essayé de nicher des schémas? Vous pouvez uniquement imbriquer à l'aide de refs ou de tableaux

const mongoose = require("mongoose"); 
let testSchema = new mongoose.Schema({ 
    date: {type: Date, required: true}, 
    test_id: {type: mongoose.Types.ObjectId().toString(), required: true}, 
}, {collection: 'timeslotsTest'}); 
let testModel = mongoose.model("test", testSchema); 

timeslotModel.create({ 
    "date":"2017/11/21", 
    "test_id":"1" 
} 
+2

Non, vous ne pouvez pas faire 'ObjectId(). ToString()' ici. Si vous voulez une "chaîne", c'est plutôt "type: String". Mais vous devriez vraiment laisser le 'ObjectId' tel qu'il est. Prend beaucoup moins d'espace et c'est mieux comme ça. –

+0

Merci. Je suis nouveau à mongoDB. Curieux - n'est-il pas possible de convertir le type ObjectId en chaîne ou mon chemin est faux? – harzz

Répondre

0

Vous n'avez pas vraiment besoin de donner l'ID. Il crée un identifiant automatiquement. Ainsi, l'échantillon ci-dessous vous aiderait.

var UserSchema = new Schema({ 
    //username: String 
username: {type: String, unique: true} 
}); 

var JobSchema= new Schema({ 
name: String, 
members: [{type: mongoose.Schema.Types.ObjectId, ref: 'UserModel'}] 
}); 

// Mongoose Model definition 
var UserModel = mongoose.model('UserModel', UserSchema); 
var JobModel= mongoose.model('JobModel', JobSchema);