javascript - Angular 5 使用 Nodejs 发布数据 - 正文格式错误

标签 javascript node.js angular angular5

我使用nodejs作为Angular 5应用程序的后端。当我使用http post请求发布数据时,它以错误的格式到达nodejs(值作为属性)- 这是我的 Angular 5 服务代码 -

login(email: string, password: string) {
    let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
    let options = new RequestOptions({ headers: headers });
    let body = { EmailAddress: email, Password: password };

    return this.http.post('http://localhost:3000/api/user/login', body, options )
        .map((response: Response) => {
            let user = response.json();
            if (user && user.token) {
                localStorage.setItem('currentUser', JSON.stringify(user));
            }
        });
}

这是 Node API - 在正文中我获得了作为属性的值

app.post('/api/user/login', urlencodedBodyparser, function (req, res) {
    console.log(req.body);
    User.find({ "EmailAddress": req.body["EmailAddress"], "Password": req.body["Password"] }, function (err, users) {
        console.log(users.length);
        if (err != null) {
            sendError(err, res);
        }
        if (users != null) {
            var count = users.length;
            if (count > 0) {
                response.data = users[0];
                res.json(response);
            }
            else {
                sendError({ message :'No user found'}, res);
                console.log("Login Failed");
            }
        }
        else {
            sendError(err, res);
        }
    })
});

正文解析器的代码 -

var bodyParser = require('body-parser');

var urlencodedBodyparser = bodyParser.urlencoded({ 扩展: false });

app.use(urlencodedBodyparser);

enter image description here

最佳答案

尝试将 header 内容类型更改为 json

application/json

像这样:

    options() {
        const headers = new Headers({
            'content-type': 'application/json'
        });
        const options = new RequestOptions({ headers: headers });

        return options;
    }




   login(): Observable<any> {
        return this.http.post('http://localhost:3000/api/user/login', this.options()).
            map((res: Response) => res.json());
    }

关于javascript - Angular 5 使用 Nodejs 发布数据 - 正文格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50910820/

相关文章:

javascript - 通过内联键盘启动 Telegram Bot

javascript - Electron UI BrowserWindow 卡住主 BrowserWindow

node.js - 清晰的手动模拟 Jest

javascript - 按浮点值对数组进行排序

angular - 为什么我的 TestBed 提供者不覆盖实际服务?

javascript - 在提交 redux 表单时循环 axios post 获取多个值

javascript - 使用 Javascript 过滤 Json

javascript - Jest/eslint 中函数缺少返回类型

windows - 如何为 Windows 或 Mac 或 Linux 系统发布 Electron 应用程序?

angular - 在 Angular 2/4 中更改图像而不重新加载