Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CouchDB设计文档…保存失败:表达式不求值为函数_Couchdb_Couchdb 2.0 - Fatal编程技术网

CouchDB设计文档…保存失败:表达式不求值为函数

CouchDB设计文档…保存失败:表达式不求值为函数,couchdb,couchdb-2.0,Couchdb,Couchdb 2.0,所以我试图在CouchDB中创建一个设计文档,但有一个小问题。这是一个机器人团队侦察系统。设计文档应该检查用户是否具有角色“marea”。如果他们这样做,则允许他们将文档输入数据库。然后,设计文档应该取JSON字段“points”,如果“team”字段匹配,则取其平均值。平均值应合并回数据库。如果用户没有“marea”角色,则应限制其输入任何文档。请让我知道你对下面代码的看法,我也希望得到一些关于我收到的错误消息的建议。我可以很好地保存设计文档,但是它的功能有点不确定。它阻止用户创建具有“poi

所以我试图在
CouchDB
中创建一个设计文档,但有一个小问题。这是一个机器人团队侦察系统。设计文档应该检查用户是否具有角色“marea”。如果他们这样做,则允许他们将文档输入数据库。然后,设计文档应该取JSON字段“points”,如果“team”字段匹配,则取其平均值。平均值应合并回数据库。如果用户没有“marea”角色,则应限制其输入任何文档。请让我知道你对下面代码的看法,我也希望得到一些关于我收到的错误消息的建议。我可以很好地保存设计文档,但是它的功能有点不确定。它阻止用户创建具有“points”值的新文档,即使该用户具有“marea”角色。确切的错误消息是:

Save failed: Expression does not eval to a function. (function(newDoc, oldDoc, userCtx, secObj) { if ((userCtx.roles.indexOf("2018marea") !==
-1) || (userCtx.name == oldDoc.name)) { if (!doc) { if ("id" in req && req["id"]) { return [{"_id": req["id"]}, "New Doc"] emit(null, "points") var pointsArray = ["points"], thisTotal = 0, thisAverage = 0; for(var i = 0;i < pointsArray.length; i++) { thisTotal+ = pointsArray[i]; } thisAverage = (thisTotal/pointsArray.length); } return [null, "Empty Database."] } doc["New Doc"] = thisAverage; doc["edited_by"] = req["userCtx"]["name"] return [doc, "Edited Data."] } else { return [null, "Cannot Overwrite Data"] } } )
保存失败:表达式不求值到函数。函数(newDoc,oldDoc,userCtx,secObj){if((userCtx.roles.indexOf(“2018marea”)==
-1) | |(userCtx.name==oldDoc.name)){if(!doc){if(“id”在req中和req[“id”]){return[{“\u id”:req[“id”],“New doc”]emit(null,“points”)var pointsArray=[“points”],thisTotal=0,thisAverage=0;for(var i=0;i
如何解决此问题,以便设计文档执行其预期功能

{
  "_id": "_design/marea",
  "language": "javascript",
  "validate_doc_update": "function(newDoc, oldDoc, userCtx, secObj) {\r\n\r\n    if ((userCtx.roles.indexOf(\"2018marea\") !== -1) || (userCtx.name == oldDoc.name)) { \r\n    \r\n        if (!doc) {\r\n        \r\n            if (\"id\" in req && req[\"id\"]) {\r\n            \r\n                return [{\"_id\": req[\"id\"]}, \"New Doc\"]  \r\n                emit(null, \"points\")\r\n                var pointsArray = [\"points\"], thisTotal = 0, thisAverage = 0;\r\n                for(var i = 0;i < pointsArray.length; i++)  {\r\n                \r\n                  thisTotal+ = pointsArray[i];\r\n                \r\n                }\r\n                \r\n                thisAverage = (thisTotal/pointsArray.length); \r\n                \r\n            }\r\n            \r\n            return [null, \"Empty Database.\"]\r\n            \r\n        }\r\n        \r\n        doc[\"New Doc\"] = thisAverage;\r\n        doc[\"edited_by\"] = req[\"userCtx\"][\"name\"] \r\n        return [doc, \"Edited Data.\"]  \r\n\r\n    } else {\r\n    \r\n        return [null, \"Cannot Overwrite Data\"]\r\n   \r\n    }\r\n  } "
}
{
“_id”:“_设计/marea”,
“语言”:“javascript”,
“验证文档更新”:“函数(newDoc,oldDoc,userCtx,secObj){\r\n\r\n如果((userCtx.roles.indexOf(\'2018marea\”)==-1){124;(userCtx.name==oldDoc.name)){\r\n\r\n如果(!doc){\r\n\r\n如果(\'id\'in-req和&req[\'id\\\']){\r\n\r\n\r\n返回[\'u-id\\':req[\'id\\'id\'New doc\r\n emit(null,\“points\”)\r\n var pointsArray=[\“points\”],thisTotal=0,thisAverage=0;\r\n for(var i=0;i
错误很明显:您的函数无效

  • +=:
    {thisTotal+=pointsArray[i];}
  • 您忘记了几个语句之间的分号:
  • “新文档”]
    emit(空,“点”)
    var pointsArray

    这应该更好地发挥作用:

    function(newDoc, oldDoc, userCtx, secObj) {
      if ((userCtx.roles.indexOf("2018marea") !==  -1) || (userCtx.name == oldDoc.name)) {
        if (!doc) {
          if ("id" in req && req["id"]) {
            return [{
              "_id": req["id"]
            }, "New Doc"];emit(null, "points"); var pointsArray = ["points"],
              thisTotal = 0,
              thisAverage = 0;
            for (var i = 0; i < pointsArray.length; i++) {
              thisTotal += pointsArray[i];
            }
            thisAverage = (thisTotal / pointsArray.length);
          }
          return [null, "Empty Database."]
        }
        doc["New Doc"] = thisAverage;
        doc["edited_by"] = req["userCtx"]["name"]
        return [doc, "Edited Data."]
      } else {
        return [null, "Cannot Overwrite Data"]
      }
    }
    
    函数(newDoc、oldDoc、userCtx、secObj){
    if((userCtx.roles.indexOf(“2018marea”)!==-1)| |(userCtx.name==oldDoc.name)){
    如果(!doc){
    如果(请求中的“id”&&req[“id”]){
    返回[{
    “_id”:请求[“id”]
    },“新文档”];发射(空,“点”);变量pointsArray=[“点”],
    总计=0,
    这个平均值=0;
    对于(var i=0;i