我正在遵循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,并使用某些参数调用回调。

07-25 21:20