-
Notifications
You must be signed in to change notification settings - Fork 4
/
example.js
46 lines (39 loc) · 1.44 KB
/
example.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/**
* This is your server.js.
*/
var m = require('./models.js').createMongooseObject();
db = m.connect('mongodb://localhost/spandex-test', function () {
console.log('connected to database');
m.User.find({}).populate('best_friend').populate('best_friend.best_friend').exec(function (err, result) {
console.log('My BFF\'s BFF: ', result.best_friend.best_friend.username);
});
});
/**
* This is models.js.
*/
var mongooseSubpopulate = require('./lib/mongoose-subpopulate.js');
// Defines models and places accessors into the mongoose object for each schema
var defineModels = function defineModels (mongoose, callback) {
var Schema = function (schemaDictionary) {
var schema = new mongoose.Schema(schemaDictionary);
schema.virtual('id').get(function () {
return this._id.toHexString();
});
return schema;
};
var ObjectId = mongoose.Schema.ObjectId;
var UserSchema = Schema({
'created': { type: Date, default: Date.now },
'username': { type: String, required: true },
'email': { type: String, index: {unique: true}, required: true },
'password': { type: String },
'best_friend': { type: ObjectId, ref: 'User' }
});
mongoose.model('User', UserSchema);
mongoose.User = mongooseSubpopulate.wrapSchema(mongoose.model('User'));
callback();
};
exports.createMongooseObject = function (callback) {
exports.db = mongooseSubpopulate.extendMongoose(require('mongoose'), defineModels);
return exports.db;
};