对于来自yeoman的默认meanjs应用程序有疑问。
在express.js文件中,它有一个如下语句:
// Globbing model files
config.getGlobbedFiles('./app/models/**/*.js').forEach(function(modelPath) {
require(path.resolve(modelPath));
});
现在我明白它会在路径“./app/models/”中获取所有.js文件,但我想要了解的是单独站立
require(path.resolve(modelPath));
如果没有将require函数设置为“var”,如何使用require函数?
其中一个包含文件的示例如下:
'use strict';
/**
* Module dependencies.
*/
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
/**
* Article Schema
*/
var ArticleSchema = new Schema({
created: {
type: Date,
default: Date.now
},
title: {
type: String,
default: '',
trim: true,
required: 'Title cannot be blank'
},
content: {
type: String,
default: '',
trim: true
},
user: {
type: Schema.ObjectId,
ref: 'User'
}
});
mongoose.model('Article', ArticleSchema);
此文件不会公开任何内容。
那么为什么需要用“var”调用require而没有暴露函数的内容?
这将如何允许以后使用内容?
答案 0 :(得分:1)
express.js文件中的代码执行模型文件的内容。 MEAN.js模型文件的解剖结构如下:
加载mongoose和schema包以及所有包含的包 模型(如果有的话)。
声明给定模型的架构
在模型名称下注册给定的模式(给定示例的文章)。
没有任何东西可以返回,因此在express.js文件中缺少任何变量赋值。从现在开始,您可以按照第三部分中指定的标签调用模型。因此,在你的控制器中,你会写一些像;
var articles = Article.query();
这行代码会加载Article模式并在后端运行提供的query()方法(默认情况下会返回该模型下数据库中的所有实例)。
总的来说,记住;并非所有功能都会返回。