我正在遵循this关于使用node.js,express和mongodb构建博客的教程。
以下是控制文章提交的功能(我认为)。
提供者和数据
因为本文的目的是说明如何使用
在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开始?) 最佳答案
该文件是具有各种实例方法的ArticleProvider的类定义。
将文章提供者定义为函数,然后使用原型定义其他函数
“ 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,回调)
将使用与提供的“ id”匹配的单个文章来调用callback(article)
在参数中。同样,回调由调用方定义并接受单个参数
这将是找到的文章
ArticleProvider.save(文章,回调)
您在此处列出的内容被截断了,因此我对此功能只有部分答案:
将接受一系列文章,并在提交的文章中设置各个字段。这些
字段包括文章ID,文章创建日期,文章评论和评论创建
日期
我猜这些文章未列出的代码中保存到
ArticleProvider.dummyData,并使用某些参数调用回调。