2017-08-31 3 views
0
この質問は前anskedされている場合があります

で、サーバー側でクライアントからデータを取得することはできませんが、私はそれのために正しい答えを見つけるように見えることはできません。私はIonicプロジェクトに取り組んでいます。ここでNode.jsとexpress.jsを使って別のプロジェクトを作成して、すべてのHTTPリクエストを処理しています。どちらも現時点ではlocalhost上で動作しています。クライアント側からサーバー側にデータを送信しようとすると、要求時のデータは、console.log(req.body)のようになります。はイオンとExpress.js

{ '{"username":"[email protected]"}': '' }

私は両方req.body [ユーザー名]をしようと試みたというようにデータを取得するために、しかし、それは単に未定義ます。 httpリクエストを処理するための

私のコントローラは、次のようになります。

router.post('/users', function (req, res) { 
    var username = req.body; 

    var newUser = new User({ 
     username: username 
    }) 

    newUser.save(function (err) { 
     if (err) { 
      return res.send(500, err); 
     } 
     return res.json(200, newUser); 
    }); 
}); 

Server.js bodyparser:

$scope.submit = function(){ 
    var username = $scope.username; 
    console.log($scope.data.username); 
    $http({ 
    method: 'POST', 
    url: 'http://localhost:8000/api/users', 
    data: username, 
    headers: {'Content-Type': 'application/x-www-form-urlencoded', 'Access-Control-Allow-Origin': '*'} 
}); 

HTML要素

<input type="text" ng-model="data.username" name="name"> 

サーバー側のAPIは次のようになります含まれています

app.use(bodyParser.json()); 
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); 
app.use(bodyParser.urlencoded({ extended: true })); 
+0

コントローラに保存されているユーザー名を教えてください – turmuka

答えて

0

オブジェクトキーを持っていて、彼らのキー「{ 『ユーザ名』を持つオブジェクトを送っているので、身体上のオブジェクトは、いくつかの間違った方法で送らbeeingてさ

{ key: value } 

値: "ハローハロー@。 com "} 'に値' 'があります。

私はあなたのnodejs /特急サーバーに投稿しているどのように固定お勧めします。しかし、あなたはいくつかのハッキングによって価値を得ることができます。このような。

const body = {'{"username":"[email protected]"}': '' } 

const keys = Object.keys(body); 
const parsed = JSON.parse(keys[0]); 
console.log(parsed.username); 

https://jsfiddle.net/wejh0fsk/2/

編集:だから私はここでやっていることは、オブジェクトのすべてのキーを取得しています。 '{"username": "[email protected]"}'というキーは1つだけです。そのキーは文字列なので、オブジェクトを取得するために解析しています。今私はオブジェクトがあります

{ username: '[email protected]' } 

最後に私はユーザー名をログアウトしています。

適切なソリューションは、あなたが明示サーバーにデータを送信する方法を修正するためだろう。

私はコントローラーをよく理解していません。あなたのNG-モデルはdata.usernameですが、その後、あなたは

var username = $scope.data.username // (that's at least what you're binding to in your view) 

はまた、あなただけの価値

$scope.submit = function(){ 
    var username = $scope.username; 
    console.log($scope.data.username); 
    $http({ 
    method: 'POST', 
    url: 'http://localhost:8000/api/users', 
    data: { username: username }, 
    headers: {'Content-Type': 'application/x-www-form-urlencoded', 'Access-Control-Allow-Origin': '*'} 
}); 
、ポストを持つオブジェクトではない送信するべきである

var username = $scope.username 

を入れています

私は特急のパーサーで確認していないが、あなたが二回bodyparserを呼んでいる理由を私は知りません。最初のもので十分でしょう。