[英]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
,但req
和res
為好。
盡管您沒有在問題中發布它,但您的route
定義仍需要更改。 路由的參數是req
和res
僅是因為傳入的是:
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.