[英]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.