提问人:expressnoob 提问时间:1/15/2011 更新时间:1/15/2011 访问量:7632
AJAX 发布到 Node.js Express 应用程序?
ajax post to node.js express app?
问:
我正在尝试在使用 ajax 插入数据库之前进行身份验证
$('#button').click(function () {
$.post('/db/', {
stuff: { "foo" : "bar"}
}, callback, "json");
});
这是我的 node.js 代码:
server.get('/', function(req,res){
console.log(res);
res.render('index.ejs', {
locals : {
header: '#Header#'
,footer: '#Footer#'
,title : 'Page Title'
,description: 'Page Description'
,author: 'Your Name'
,analyticssiteid: 'XXXXXXX'
}
});
});
^^这部分工作正常。它来自样板,我可以去localhost并查看首页。
下一部分应该是mongo插入发生的地方。这给了我一个 404。
server.on('/db/', function(req,res){
console.log(req);
console.log(res);
var db = new mongo.Db( 'dbname' , new mongo.Server( 'localhost', 20003, {}), {});
db.open(function (err) {
db.collection('testCollection', function (err, collection) {
collection.insert(res.stuff);
});
});
});
我试图做的是将对象插入到testCollection中。stuff
现在我在 /db/ 上得到 404
我敢肯定这是非常错误的。我认为我不应该使用server.on,server.get也不起作用。请指教,谢谢。
答:
6赞
Ivo Wetzel
1/15/2011
#1
您必须使用 ,因为您是通过 jQuery 执行 POST 请求。server.post
server.on
将向服务器添加一个事件侦听器,在本例中为不存在的事件,该事件永远不会被任何触发。/db/
请花点时间确保阅读 express.js 指南,Node.js API 文档也可能派上用场。
2赞
Dave Ward
1/15/2011
#2
由于您期待一个帖子,因此应该在方法中定义 /db/ 处理程序。您收到 404 是因为服务器没有为 POST 和 /db/ 的组合定义路由。server.post
1赞
generalhenry
1/15/2011
#3
您还应该对数据库连接进行身份验证,并且不应在每次请求时重新连接到数据库
var db = new mongo.Db( 'dbname' , new mongo.Server( 'localhost', 20003, {}), {});
db.authenticate(user, password, function({ // callback }));
server.post('/db/', function(req,res){
db.open(function (err) {
db.collection('testCollection', function (err, collection) {
collection.insert(. . .);
});
});
});
评论
0赞
expressnoob
1/15/2011
我认为身份验证功能中有错别字?
0赞
expressnoob
1/15/2011
谢谢,我已经将新的mongo.db移到了请求回调之外,但是我无法在外部获取身份验证函数并使其仍然有效。
评论