PHP将函数转换为MongoDB

PHP将函数转换为MongoDB,php,node.js,mongodb,Php,Node.js,Mongodb,我想把我的一些PHP函数转换成mongodb,但是我想不出来,有人能帮我吗 PHP函数应用程序: function applications($gangId) { $applications = $this->db->query("SELECT * FROM `gang_applications` where `status`='avaliable' and `gangid`='$gangId'"); return ($applications ?

我想把我的一些PHP函数转换成mongodb,但是我想不出来,有人能帮我吗

PHP函数应用程序:

  function applications($gangId) {
        $applications = $this->db->query("SELECT * FROM `gang_applications` where `status`='avaliable' and `gangid`='$gangId'");
        return ($applications ? $applications : false);
    }
    gangshema.methods.applications(thisid) {
        // some sort of callback?
        db.gang_applications.find({status:avaliable, gangid: thisid}, function(err, cursor) {

            if (cursor != 0) {
                console.log(cursor);
            }

        });
    }
我对函数应用程序的尝试:

  function applications($gangId) {
        $applications = $this->db->query("SELECT * FROM `gang_applications` where `status`='avaliable' and `gangid`='$gangId'");
        return ($applications ? $applications : false);
    }
    gangshema.methods.applications(thisid) {
        // some sort of callback?
        db.gang_applications.find({status:avaliable, gangid: thisid}, function(err, cursor) {

            if (cursor != 0) {
                console.log(cursor);
            }

        });
    }
PHP函数应用程序_done

 function application_done($applicationId) {
        $applications = $this->db->query("SELECT * FROM `gang_applications` where `id`='$applicationId'")->row();

        return ($applications->status == 'avaliable' ? false : true);
    }
    gangshema.methods.application_done(applicationid) {
        db.gang_applications.find({id:applicationid}, function(err,cursor) {
            //   return ($applications->status == 'avaliable' ? false : true);
        });
    }
我对函数应用的尝试已完成

 function application_done($applicationId) {
        $applications = $this->db->query("SELECT * FROM `gang_applications` where `id`='$applicationId'")->row();

        return ($applications->status == 'avaliable' ? false : true);
    }
    gangshema.methods.application_done(applicationid) {
        db.gang_applications.find({id:applicationid}, function(err,cursor) {
            //   return ($applications->status == 'avaliable' ? false : true);
        });
    }
但我的主要任务是一个名为accept_applications的函数。我不知道如何做这部分,包括调用其他函数以获得响应

    function accept_application($userid,$applicationId) {
            $box = 'failure';

            if (empty($applicationId)) {
                $message = "applicationId is empty";
            } elseif ($this->application_done($applicationId)) {
                $message = "Already registred!";

            } else {
                $application = $this->getApplication($applicationId);
$test = true;
                if(!($test)) {
                    $message = "false test";
                } else {
                    $this->db->query("UPDATE `gang_applications` SET `status`='accepted', `by`='$userid' where `id`='$applicationId'");
                    $this->gangs->add_member($application->userid,'gang','member',$application->gangid);
                    $message = "Accept!";
                }

            }
            return $message;
        }

在Node.js脚本的开头使用此选项:

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/test';

第一段:

function applications($gangId) {
    $applications = $this->db->query("SELECT * FROM `gang_applications` where `status`='avaliable' and `gangid`='$gangId'");
    return ($applications ? $applications : false);
}
变成:

var findApplications = function(db, gangId) {
   var cursor = db.collection('gang_application').find({
     "status": "available" 
     "gangId": gangId
   });
   var results = [];
   cursor.each(function(err, doc) {
      if (err) console.log("Error: " + err);
      } else if (doc != null) {
         console.log("Null document.");
      } else {
         results.push(doc);
      }
   });
   return results;
};
function applications(gangId) {
  db.gang_application
}
var applicationsDone = function(db, applicationId) {
   var cursor = db.collection('gang_application').find({
     "id": applicationId
   });
   var results = [];
   cursor.each(function(err, doc) {
      if (err) {
        console.log("Error: " + err);
      } else if (doc != null) {
         console.log("Null document.");
      } else {
         results.push(doc.status);
      }
   });
   return results;
};

第二段:

function application_done($applicationId) {
    $applications = $this->db->query("SELECT * FROM `gang_applications` where `id`='$applicationId'")->row();

    return ($applications->status == 'avaliable' ? false : true);
}
function accept_application($userid, $applicationId) {
        $box = 'failure';

        if (empty($applicationId)) {
            $message = "applicationId is empty";
        } elseif ($this->application_done($applicationId)) {
            $message = "Already registred!";

        } else {
            $application = $this->getApplication($applicationId);
            $test = true;
            if(!($test)) {
                $message = "false test";
            } else {
                $this->db->query("UPDATE `gang_applications` SET `status`='accepted', `by`='$userid' where `id`='$applicationId'");
                $this->gangs->add_member($application->userid,'gang','member',$application->gangid);
                $message = "Accept!";
            }

        }
        return $message;
    }
变成:

var findApplications = function(db, gangId) {
   var cursor = db.collection('gang_application').find({
     "status": "available" 
     "gangId": gangId
   });
   var results = [];
   cursor.each(function(err, doc) {
      if (err) console.log("Error: " + err);
      } else if (doc != null) {
         console.log("Null document.");
      } else {
         results.push(doc);
      }
   });
   return results;
};
function applications(gangId) {
  db.gang_application
}
var applicationsDone = function(db, applicationId) {
   var cursor = db.collection('gang_application').find({
     "id": applicationId
   });
   var results = [];
   cursor.each(function(err, doc) {
      if (err) {
        console.log("Error: " + err);
      } else if (doc != null) {
         console.log("Null document.");
      } else {
         results.push(doc.status);
      }
   });
   return results;
};

请按以下方式致电:

MongoClient.connect(url, function(err, db) {
  if (!db) {
    console.log("Database did not connect.");
  }
  else {
    findApplications(db, "102"); // Replace "102" with gangId
    applicationsDone(db, "104"); // Replace "104" with applicationId
  }
});

编辑每个评论,下面是如何包含回调:

// Note extra `callback` parameter
var applicationsDone = function(db, applicationId, callback) {
   var cursor = db.collection('gang_application').findOne({
     "id": applicationId
   });
   cursor.each(function(err, doc) {
      if (err) {
        console.log("Error: " + err);
      } else if (doc != null) {
         console.log("Null document.");
      } else {
         return (doc.status == "available");
      }
   });
};
致电:

MongoClient.connect(url, function(err, db) {
  if (!db) {
    console.log("Database did not connect.");
  }
  else {
    var callback = function(doc) { console.log(doc.status); };
    applicationsDone(db, "104", callback);
  }
});

编辑第三段:

function application_done($applicationId) {
    $applications = $this->db->query("SELECT * FROM `gang_applications` where `id`='$applicationId'")->row();

    return ($applications->status == 'avaliable' ? false : true);
}
function accept_application($userid, $applicationId) {
        $box = 'failure';

        if (empty($applicationId)) {
            $message = "applicationId is empty";
        } elseif ($this->application_done($applicationId)) {
            $message = "Already registred!";

        } else {
            $application = $this->getApplication($applicationId);
            $test = true;
            if(!($test)) {
                $message = "false test";
            } else {
                $this->db->query("UPDATE `gang_applications` SET `status`='accepted', `by`='$userid' where `id`='$applicationId'");
                $this->gangs->add_member($application->userid,'gang','member',$application->gangid);
                $message = "Accept!";
            }

        }
        return $message;
    }
变成这样。请注意对上述函数所做的一些更改以使其正常工作,例如从
应用程序
返回文档数组,并使用
.findOne()
进行
applicationDone()


把这些信息退回以后使用怎么样?(关于第三个代码段呢?:)请参见示例
.each()
语句,了解我如何使用每个
doc
对象的属性。您还可以向每个函数添加一个额外的参数(例如,
var applicationsDone=function(db,applicationId,callback){
,然后
cursor.each(doc){callback(doc);}
。然后传递一个函数,其中一个参数表示文档(例如,
var fn=function(doc){console.log(doc.status);}
)作为最后一个参数,并在该回调函数中对文档执行功能。我可以与您聊天吗?我只想问一些未来的问题,(请注意,我已经接受了您的答案:)@nick bullLet us。