负责返回和更新数据的JavaScript函数

时间:2011-11-26 07:15:27

标签: javascript function

我正在关注使用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开始?)

1 个答案:

答案 0 :(得分:3)

此文件是ArticleProvider的类定义,包含各种实例方法。

  1. 将文章提供程序定义为函数,然后使用prototype来定义更多函数 'findAll','findById'和'save'意味着您可以使用。来调用这些函数 语法:

    foo = new ArticleProvider();
    foo.findAll(callback);
    foo.findById(id, callback);
    foo.save(articles, callback);
    
  2. articleCounter是一个本地可用于该文件的变量 ArticleProvider定义

  3. dummyData是ArticleProvider对象可用的内部变量

  4. ArticleProvider.findAll(回调)

    将调用当前保存到ArticleProvider的所有文章的回调(数组)。 调用者必须定义一个可以接受一个变量并且期望的回调函数 在调用

  5. 时要填充的文章数组的变量
  6. ArticleProvider.findById(id,callback)

    将使用与提供的“id”匹配的单篇文章调用回调(文章) 在参数中。同样,回调由调用者定义并接受单个参数 这将是文章

  7. ArticleProvider.save(文章,回调)

    您在此处列出的内容已被截断,因此我只对该功能有部分答案:

    接受一系列文章,并在提交的文章中设置各种字段。这些 字段包括文章ID,文章创建日期,文章评论和评论创建 日期

    我猜测在未列出的代码中这些文章被保存到 ArticleProvider.dummyData,以及使用某个参数调用回调。