0

node.js のヘルプが必要です: req.body は次のように設定されています

{ 
   '{
       "email":"mail@hostname.com",
       "password":"12345"
    }'
     : '' 
} 

しかし、値を取得できません req.body.email と req.body.password は未定義です

私のコードは次のとおりです。

user.js

exports.loginByEmail= function(req, res) {
console.log('POST');
console.log(req.body);//show values
console.log(req.body.email);//undefined
console.log(req.body.password);//undefined
    User.find({email:req.body.email,password:req.body.password}).toArray(function(err, userLoged) {
    if(err) return res.send(500, err.message);
    res.status(200).jsonp(userLoged);
    });
};

app.js

var express = require("express"),
app = express(),
bodyParser  = require("body-parser"),
methodOverride = require("method-override");
mongoose = require('mongoose');

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(methodOverride());
4

3 に答える 3

2

最初のビットで本文を設定する方法は、キーがオブジェクト文字列で、値が空の文字列であるように見えます。

つまり、あなたの本文はキー '{email:mail@hostname.com,password:12345}' (わかりやすくするために引用符を削除) で、値は ''

あなたの体を次のように書いてみてください

  {
    email: "email@email.com",
    password: "12345"
  }
于 2015-09-27T18:11:51.703 に答える
0

(クライアント側で)試してください:

$http({
    method: 'POST',
    url: 'http://localhost:3000/api/loginByEmail',
    data: 'email=' + encodeURIComponent(this.formLoginByEmail.username) +
          '&password=' + encodeURIComponent(this.formLoginByEmail.password),
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
于 2015-09-28T00:15:22.150 に答える