+1 vote
1 view
in Web Technology by (47.7k points)

Using node.js, mongodb on mongoHQ and mongoose. I'm setting a schema for Categories. I would like to use the document ObjectId as my categoryId.

var mongoose = require('mongoose'); 

var Schema = mongoose.Schema, 

ObjectId = Schema.ObjectId; 

var Schema_Category = new Schema({ 

categoryId : ObjectId, 

title : String, 

sortIndex : String 

});

I then run

var Category = mongoose.model('Schema_Category'); 

var category = new Category(); 

category.title = "Bicycles"; 

category.sortIndex = "3"; 

category.save(function(err) { 

if (err) { 

throw err; 

console.log('saved'); 

mongoose.disconnect(); 

});

Notice that I don't provide a value for categoryId. I assumed mongoose will use the schema to generate it but the document has the usual "_id" and not "categoryId". What am I doing wrong?

1 Answer

0 votes
by (107k points)

If you want to set ObjectId as a data type in mongoose then you do want a nicely named UUID field, mongoose provides virtual properties that allow you to proxy (reference) a field.

Check out the code mentioned below:-

var mongoose = require('mongoose'); 

var Schema = mongoose.Schema, 

ObjectId = Schema.ObjectId; 

var Schema_Category = new Schema({ 

title : String, 

sortIndex : String 

}); 

Schema_Category.virtual('categoryId').get(function() {

return this._id; 

});

Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...