Javascript 如何将变量放入数据库设计文档中

Javascript 如何将变量放入数据库设计文档中,javascript,angularjs,pouchdb,Javascript,Angularjs,Pouchdb,我正在PockDB中创建一个设计文档,如下所示 var desingDoc = { _id: '_design/' + param, views: { by_name: { map: function (doc) { if (doc._id.indexOf(param + '_') == 0) emit(doc._id); }.toString() } } }; 我犯

我正在PockDB中创建一个设计文档,如下所示

var desingDoc = {
    _id: '_design/' + param,
    views: {
      by_name: {
        map: function (doc) {
          if (doc._id.indexOf(param + '_') == 0)
            emit(doc._id);
        }.toString()
      }
    }
  };
我犯了错误

pouchdb.min.js:7 ReferenceError: param is not defined
  • 为什么不评估param
  • 我如何评估它
  • 这是完整的函数

     function index(param) {
      var desingDoc = {
        _id: '_design/' + param,
        views: {
          by_name: {
            map: function (doc) {
              if (doc._id.indexOf(param + '_') == 0)
                emit(doc._id);
            }.toString()
          }
        }
      };
    
      _db.put(desingDoc).then(function () {
        console.log('success')
      }).catch(function (err) {
        console.log(err)
        // todo handle the non saved case
      });
    }
    

    _id的计算结果很好,只是map函数导致了错误

    我知道这是一个老问题,但我只是遇到了同样的问题,并像这样解决了它:

    map: "function (doc) { if (doc._id.indexOf(" + param + "_) == 0) { emit(doc._id); } }"
    

    不要使用.toString(),只需将函数用引号括起来。

    引用的错误是因为您尚未定义
    param
    。你能发布完整的代码吗?param是函数param。我认为你试图插入DB的映射应该是一个值,你正在转换成字符串。为此,您必须调用为map编写的函数。