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