如何在Mongoose Schema方法中指定`this`

我试图摆弄Mongoose中的Schema方法。 我想知道如何从我使用的模式中调用信息,有点像使用this

我的模式看起来像这样:

 'use strict'; var mongoose = require('mongoose'), Schema = mongoose.Schema; var BuildingSchema = new Schema({ name: String, info: String, level: { // The current level of the template, default value is 1 type: Number, default: 1 }, ressource: { // Ressouces level: [{ gain: [{ // Gain per level amount: Number, ressource: { type: Schema.ObjectId, ref: 'Ressource' } }], cost: [{ // Cost per level amount: Number, ressource: { type: Schema.ObjectId, ref: 'Ressource' } }] }] }, storage: { // Storage capacity: [{ // Storage capacity changes per level inside: Number, outside: Number }], stored: { // Stored inside: [{ // Ressources stored inside amount: Number, ressource: { type: Schema.ObjectId, ref: 'Ressource' } }], outside: [{ // Ressources stored outside amount: Number, ressource: { type: Schema.ObjectId, ref: 'Ressource' } }] } } }, { toObject: { virtuals: true }, toJSON: { virtuals: true } }); /** * Methods */ BuildingSchema.methods = { printThis: function() { console.log('Print in prompt : ', this); } }; module.exports = mongoose.model('Building', BuildingSchema); 

我从我的控制器调用这样的方法

 console.log('Print in browser : ', building.printThis); 

到目前为止,我print in prompt返回undefined

这里打印出来的printThis方法:

 > building = new Building() { _id: 554899217377c9b97c54bb36, storage: { stored: { outside: [], inside: [] }, capacity: [] }, ressource: { level: [] }, level: 1, id: '554899217377c9b97c54bb36' } > building.printThis() Print in prompt : { _id: 554899217377c9b97c54bb36, storage: { stored: { outside: [], inside: [] }, capacity: [] }, ressource: { level: [] }, level: 1, id: '554899217377c9b97c54bb36' } undefined >