2013-11-21 6 views
6

Я новичок в Nodejs. Как экспортировать несколько объектов? НапримерNodejs: Как экспортировать несколько объектов?

fs = require("fs") 
Sequelize = require 'sequelize' 

module.exports = (config)-> 
    sequelize = new Sequelize(
    config.database.name 
    config.database.username 
    config.database.password 
    config.database.options 
) 

    fs.readdirSync(config.root+'/server/models/').forEach (file)-> 
    module.exports['Page'] = sequelize.import(config.root + '/server/models/' + file) # --> export this model 
    sequelize # --> export this object 

Я хочу использовать Page модель что-то вроде:

Page = require('./models').Page 

Я хочу использовать Sequelize объект что-то вроде:

Sequelize = require('./models').Sequelize 

Спасибо за совет: D

ОБНОВЛЕНО: решаемые следующим образом:

fs = require("fs") 
Sequelize = require 'sequelize' 

module.exports = (config)-> 
    @Sequelize = new Sequelize(
    config.database.name 
    config.database.username 
    config.database.password 
    config.database.options 
) 

    fs.readdirSync(config.root+'/server/models/').forEach (file)-> 
    @Page = sequelize.import(config.root + '/server/models/' + file) 
    @ 

, но у меня есть еще одна проблема. Как назначать модели динамически?

ОБНОВЛЕНО решаемые вторая проблема следующим образом:

fs = require("fs") 
Sequelize = require 'sequelize' 

module.exports = (config)-> 
    @Sequelize = new Sequelize(
    config.database.name 
    config.database.username 
    config.database.password 
    config.database.options 
) 

    # @Page = sequelize.import(config.root + '/server/models/page') 
    fs.readdirSync(config.root+'/server/models/').forEach (file)-> 
    str = file.replace('.coffee', '') 
    model = str.charAt(0).toUpperCase() + str.slice(1) 
    @[model] = @Sequelize.import(config.root + '/server/models/' + file) if ~file.indexOf('.coffee') 
    @ 

ответ

5

Просто оберните их в виде литерала объекта. В чистом JS (без CoffeeScript), который был бы:

module.exports = { 
    Page: {}, // or whatever you want to assign it to 
    Serialize: {} // again, set it to what you like 
}; 

В CoffeeScript вы используете отступы, кроме случаев, когда вы хотите сделать пустой объект:

module.exports = 
    Page: {}, 
    Serialize: {} 
+0

'=' должен быть ':' в object literal :) – robertklep

+1

Конечно. Спасибо, @robertklep – Slavo

+0

Спасибо за ответ. См. Мое обновление: D – Zeck

Смежные вопросы