访问文件夹内的文件,该文件夹位于sails js(node js framework)中的config文件夹中

时间:2016-10-01 11:44:43

标签: node.js sails.js

我必须访问一个文件,该文件位于config文件夹(/config/schemas/userSchemas.js)内的文件夹中。如何从其他地方访问此文件,例如从我的控制器或服务。这该怎么做? 我试过了sails.config.schemas.userSchemas。但它没有用。我还能尝试什么?

3 个答案:

答案 0 :(得分:2)

假设您有以下目录结构

myapp
├── app.js
├── _config
│   ├── _schemas
|       |
|       ├── userSchemas.js
|       ├── otherSchemas.js
|
├── _controller
│   ├── _module1
|   |   |
|   |   ├── userController.js
|   |   ├── otherController.js
|   ├── otherController.js

app.js中,您可以访问

require('./config/schemas/userSchemas.js');

otherController.js中,您可以访问

require('../config/schemas/userSchemas.js');

userController.js中,您可以访问

require('../../config/schemas/userSchemas.js');

结论: .. 用于转到父目录(一个目录返回),而 . 用于当前目录

我希望这会对node.js中的目录结构有所帮助

答案 1 :(得分:1)

我建议为路径定义一个全局变量。

考虑您有以下目录结构(如@ arif的答案中所述)。

myapp
├── app.js
├── _config
│   ├── _schemas
|       |
|       ├── userSchemas.js
|       ├── otherSchemas.js
|
├── _controller
│   ├── _module1
|   |   |
|   |   ├── userController.js
|   |   ├── otherController.js
|   ├── otherController.js

现在你在app.js写下第一行如下。

global.__base = __dirname + '/';

注意:现在全局.__基数指向/path-to-your-myapp-directory/myapp/

现在您可以访问userSchema.js或任何其他此类文件。

在所有文件(app.jsotherController.jsuserController.js)中,您可以userSchemas.js这样要求

require(global.__base + 'config/schemas/userSchemas.js');

答案 2 :(得分:1)

实际上不建议直接使用require配置文件。 Sails将为您提供它们,并将内容合并到sails.config,完全忽略您的目录结构。例如,如果您的config/schemas/userSchemas.js文件包含:

module.exports.userSchemas = {
   foo: "bar"
}

然后,您就可以在应用中以sails.config.userSchemas的形式访问该配置。 非常仔细地注意第一行:如果您只是module.exports = {...},那么该对象将合并到sails.config不是 sails.config.userSchemas - - 正如我之前所说,配置被合并而不考虑目录结构。

如果您需要加载希望加入sails.config的文件,只需将它们放在项目的其他文件夹中(例如{{ 1}})并使用其他答案中指定的schemas