簡體   English   中英

使用AJAX構造mongodb查詢

[英]Construct mongodb query with AJAX

我正嘗試通過以下ajax通過電子郵件example@email.com來統計用戶數量:

function getCount(event) {
event.preventDefault();

var queryCount = {
    email:'example@email.com'
}

$.ajax({
    type: 'GET',
    data: queryCount,
    url: '/countuser',
    dataType: 'JSON'
}).done(function(response) {
    //Check for successful (blank) response
    if(response.msg === '') {

    } else {

    }
});
}

而這在users.js中:

exports.countuser = function(db) {
return function(req, res) {
    db.collection('userlist').find(req.body).count(function(err,count) {
      res.send(count);
    });
  }
};

但這不起作用(獲取完整用戶列表的數量,這讓我認為req.body為空)。 解決這個問題的正確方法是什么?

您可能不希望僅傳遞req.body而是獲得您發布的參數。 但這只要您已經設置了主體解析器就可以了。 對此有更好的調用,但是

app.use(express.bodyParser());

但是可能您的函數存在的問題是您沒有傳遞req

exports.countuser = function(db,req,res) {

然后,你需要不僅通過db ,但reqres為好。

盡管您沒有在問題中發布它,但您的route定義仍需要更改。 路由的參數是reqres僅是因為傳入的是:

app.get('/countuser',function(req,res) {

    user.countuser(db,req,res);

因此,目前您只是獲得count ,作為響應中的數字。 這是您要的。 但這只是一個數字,不是JSON。 因此,您需要進行一些更改。

var countResponse = {};

countResponse.count = count;
res.body(countResponse);

並且您還有一個對象作為要傳遞的數據。這不是url編碼的,請使用$ .param幫助器:

.ajax({
    type: 'GET',
    data: $.param(queryCount),
    url: '/countuser',
    dataType: 'JSON'
}).done(function(response) {

簡而言之,這里有很多錯誤。 花一些時間通讀文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM