【问题标题】:Nodejs: How to export multiple objects?Nodejs:如何导出多个对象?
【发布时间】:2013-11-22 02:54:47
【问题描述】:

我是 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')
  @

【问题讨论】:

    标签: node.js coffeescript


    【解决方案1】:

    只需将它们包装在一个对象字面量中。在纯 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: {}
    

    【讨论】:

    • = 在对象文字中应该是 : :)
    • “如何动态分配模型”是什么意思?
    • 抱歉英语不好。例如。我的/server/models 文件夹中有 3 个模型。如您所见,我正在遍历每个模型。现在我只是将每个模型分配给@Page 变量。如何动态制作。
    • 如何将每个模型分配给不同的变量,如@Page
    • 纯JS中的属性名可以使用字符串。因此,您可以使用"SomeName" : {} 而不是Page: {},您可以将“SomeName”更改为您喜欢的任何内容。我不知道如何在 CoffeeScript 中做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    相关资源
    最近更新 更多