Consider this sample
var ArticleSchema = new Schema({
content: {
type: String,
default: '',
trim: true
},
user: {
type: Schema.ObjectId,
ref: 'User'
}
}, {
toObject: { virtuals: true },
toJSON: { virtuals: true }
});
ArticleSchema.virtual('is_owner').get(function () {
//how to access app request here?
//i would like to get req.user variable here
return false;
});
mongoose.model('Article', ArticleSchema);
As written in comment, i want to access route request inside virtual property, but don't know is that even legal?
First idea was to require express inside virtual
ArticleSchema.virtual('is_owner').get(function () {
var express = require('express');
var app = express();
//then what?
});
But app doesn't have request
Let's say this is your route:
app.post('/articles', function newArticle(req, res, next) {
var article = new Article(req.body);
article.set('is_owner', req);
article.save(function onSaved(err, savedArticle) {
if (err) {
return next(err);
}
res.json(savedArticle);
});
});
and this is your virtual:
ArticleSchema.virtual('is_owner').set(function (req) {
// => do what ever you want here.
});