2012-09-09 62 views
1

我的問題是我已經厭倦了寫的:在節點上創建文件的全局變量

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var mongooseTypes = require("mongoose-types"); 
mongooseTypes.loadTypes(mongoose, 'url'); 
var Url = mongoose.SchemaTypes.Url; 
var mongooseTypes = require("mongoose-types"); 
.... 
在每一個模式文件

。有沒有一種方法讓你需要在該文件中設置mongoose,Schema和mongooseTypes變量?

我可以這樣做:var mongooseTypes = require(mongoose-global-stuff.js).mongooseTypes; 但是,然後我一次定義每個變量,我在這裏沒有獲得任何東西。

我只發現這是貓鼬的問題,因爲事情是如何定義的。

回答

4

你可以有一個單獨的模塊(比如, 'moongoose-包裝')是這樣的:

var mongoose = require('mongoose'); 
var mongooseTypes = require("mongoose-types"); 
mongooseTypes.loadTypes(mongoose, 'url'); 

module.exports.mongoose = mongoose; 
module.exports.Schema = mongoose.Schema; 
module.exports.mongooseTypes = require('mongoose-types'); 
module.exports.Url = mongoose.SchemaTypes.Url; 

,然後用它像這樣:

var mongoose = require('./path/to/mongoose-wrapper'); 
mongoose.mongooseTypes.doSomethingWithMongooseTypes(); 
mongoose.Url.doSomethingWithUrl(); 
... 
+0

我猜得工作,因爲我沒有看到以編程方式直接從一個名稱空間插入變量的任何方式。謝謝 – ag4ve