gpt4 book ai didi

Node.js Express 无法获取发布数据

转载 作者:太空宇宙 更新时间:2023-11-03 22:47:32 25 4
gpt4 key购买 nike

当我发布到/insertUser 并且它 schema.saveUser(req) 时,它找不到正确的数据。我正在使用 Node 检查器,它找不到我的发布数据。我也尝试过 req.body 但什么也没找到。我正在发送一个 json

var express = require('express');
var bodyParser = require('body-parser');
var schema = require("./schemas");
var app = express();

app.get('/hello.txt', function(req, res){
res.send('Hello World2');
});

app.post('/insertUser', function(req, res){
console.log("Request handler 'insertUser' was called.");
//console.log(req.body);

schema.saveUser(req);

response.writeHead(200, {"Content-Type": "text/plain"});
res.send("You've sent the text: " + req);
response.write("The following data has been saved to the database: " + jsonString);
res.end();
});

var server = app.listen(8888, function() {
console.log('Listening on port %d', server.address().port);
});



function saveUser(postData){
var jsonObj = JSON.parse(postData);

var newUser = new User({
name: jsonObj.name,
email: jsonObj.email,
photoURL: jsonObj.photourl,
groups: jsonObj.groups
});

newUser.save(function(err, newUser) {
if (err) return console.error(err);
console.dir(newUser);
});
}

编辑:

    SyntaxError: Unexpected token o

at Object.parse (native)
at Object.saveUser (schemas.js:42:22)
at Object.handle (server.js:25:9)
at next_layer (route.js:103:13)
at Route.dispatch (route.js:107:5)
at c (index.js:195:24)
at Function.proto.process_params (index.js:251:12)
at next (index.js:189:19)
at next (index.js:166:38)
at Layer.urlencodedParser [as handle] (index.js:70:44)

最佳答案

在客户端

Cannot GET /insertUser表示这是一个 GET 路由,当单击链接或输入页面 URL 时,浏览器会调用该路由。

但你指定了app.post('/insertUser'...这意味着只有在使用 POST 方法时才会调用该路由(例如,在提交表单时使用,而不是在单击链接时使用)

如果这是表单的结果,请不要忘记指定方法 ( <form method="post"> )。对于 ajax 调用也是如此。

如果你想在开发模式下测试,你可以使用 Postman在 chrome 上轻松调用 POST 路由。如果您没有 chrome,请使用curl。

后端

Express 4.0 中不包含 Express 主体解析器,因此您需要安装它然后使用它:

var express = require('express');
var bodyParser = require('body-parser');
var schema = require("./schemas");
var app = express();

app.use(bodyParser());

app.get('/hello.txt', function(req, res){
res.send('Hello World2');
});

然后你可以使用req.body

关于Node.js Express 无法获取发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23276155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com