我有一个javascript程序找到用户然后它在服务器端返回它的_id。是否有可能在客户端做同样的事情?或者在客户端调用服务器端变量而不使用jquery?这是我的代码:
router.post('/', function (req, res) {
var post = req.body;
var query = User.where({userName : post.username});
query.findOne(function(err, user){
if (err) { return err}
if (user) {
user.isValidPassword(post.password, function(n, isMatch){
if(isMatch) {
req.session.user_id = user._id;
res.redirect('/library?' + user._id);
} else{
res.redirect('/login');
}
});
}else{
res.redirect('/login');
}
});
});
我在客户端执行了一项功能,但我不知道为什么它只占用我的第一个用户
function find2(){
var User = model.users[0]._id;
console.log(User);
}
特别是我想在客户端调用变量user._id(如您所见,这是服务器端)。有办法吗?谢谢:))
答案 0 :(得分:1)
好的......等等......如果我理解,你试图从路径中取一个参数,是不是?那么,在客户端你可以做类似的事情:
function find2(){
var User = window.location.href;
var type = User.substr(User.indexOf("?")+1, User.length);
console.log(type);
}
对于像localhost:3000 / library这样的链接?dsds658dad,它打印的确是dsds658dad
答案 1 :(得分:0)
我不知道能够远程使用JS调用MongoDb,但是您可以使用服务器端JS(例如node.js),它将从MongoDb获取数据并作为JAX作为AJAX响应的一部分在客户端上返回
某些JS框架(例如meteor.js)可以隐藏这项工作。
这是我项目中的一个例子:
服务器端(node.js):
app.get('/api/info/:mode', function(req, res) {
var mode = req.params.mode;
console.log(mode);
var process = function(err, questions) {
if(!err) {
var result = {};
for (var i = 0; i < questions.length; i++) {
if(result.hasOwnProperty(questions[i].metagroup)) {
var dict = result[questions[i].metagroup];
if(dict.hasOwnProperty(questions[i].group)) {
dict[questions[i].group] += 1;
} else {
dict[questions[i].group] = 1;
}
// result[questions[i].metagroup] = dict;
}
else {
var dict = {};
dict[questions[i].group] = 1;
result[questions[i].metagroup] = dict;
}
}
return res.send({ status: 'OK', info: result });
} else {
res.statusCode = 500;
log.error('Internal error(%d): %s', res.statusCode, err.message);
return res.send({ error: 'Server error' });
}
};
if (mode == 'all') {
return QuestionModel.find(process);
} else {
return QuestionModel.find({ priority_group: 1 }).exec(process);
};
});
客户端(angular.js):
var requestGroupList = function(mode) {
return $http.get("https://myhost/api/info/"+ mode)
.then(function(response) {
return response.data;
});
};