我正在关注使用node.js,express和mongodb构建博客的this教程。
以下是控制文章提交的功能(我认为)。
提供商和数据
因为本文的目的是展示如何使用a 在node.js中的持久化方法我们将从抽象开始: 供应商。这些“提供者”将负责返回和 更新数据。最初我们将创建一个虚拟内存版本 只是为了引导我们运行,然后我们将转向使用 一个真正的持久层而不改变调用代码。
articleprovider-memory.js:
var articleCounter = 1;
ArticleProvider = function(){};
ArticleProvider.prototype.dummyData = [];
ArticleProvider.prototype.findAll = function(callback) {
callback( null, this.dummyData )
};
ArticleProvider.prototype.findById = function(id, callback) {
var result = null;
for(var i =0;i<this.dummyData.length;i++) {
if( this.dummyData[i]._id == id ) {
result = this.dummyData[i];
break;
}
}
callback(null, result);
};
ArticleProvider.prototype.save = function(articles, callback) {
var article = null;
if( typeof(articles.length)=="undefined")
articles = [articles];
for( var i =0;i< articles.length;i++ ) {
article = articles[i];
article._id = articleCounter++;
article.created_at = new Date();
if( article.comments === undefined )
article.comments = [];
for(var j =0;j< article.comments.length; j++) {
article.comments[j].created_at = new Date();
}
任何人都可以用简单的英语向我解释每个函数正在做什么(抱歉,我是一个JavaScript初学者)?
(顺便说一下,由于任何常见做法,作者决定只从ArticleProvider
中的CAP开始?)
答案 0 :(得分:3)
此文件是ArticleProvider的类定义,包含各种实例方法。
将文章提供程序定义为函数,然后使用prototype来定义更多函数 'findAll','findById'和'save'意味着您可以使用。来调用这些函数 语法:
foo = new ArticleProvider();
foo.findAll(callback);
foo.findById(id, callback);
foo.save(articles, callback);
articleCounter是一个本地可用于该文件的变量 ArticleProvider定义
dummyData是ArticleProvider对象可用的内部变量
ArticleProvider.findAll(回调)
将调用当前保存到ArticleProvider的所有文章的回调(数组)。 调用者必须定义一个可以接受一个变量并且期望的回调函数 在调用
ArticleProvider.findById(id,callback)
将使用与提供的“id”匹配的单篇文章调用回调(文章) 在参数中。同样,回调由调用者定义并接受单个参数 这将是文章
ArticleProvider.save(文章,回调)
您在此处列出的内容已被截断,因此我只对该功能有部分答案:
接受一系列文章,并在提交的文章中设置各种字段。这些 字段包括文章ID,文章创建日期,文章评论和评论创建 日期
我猜测在未列出的代码中这些文章被保存到 ArticleProvider.dummyData,以及使用某个参数调用回调。