2016-11-08 146 views
0

我試圖傳遞表單值,但我沒有得到它,我試過了幾種方法。 顯然Node.js不能識別傳遞給url的參數,我不知道它可能是什麼。將值傳遞給節點

//AngularController 
$scope.adicionarUsuario = function() { 

    $http.post("/usuario/salvar",{params:{"usuario":$scope.usuarioform}}) 
    .success(function (data) { 
     delete $scope.usuarioform; 
     alert(data); 
     $scope.salvo = true; 
     $scope.cadastraUsuario.$setPristine(); 
    }).error(function (data) { 
     $scope.erro = true; 
     $scope.message = "Aconteceu um problema: " + data; 
    }); 
}; 

//Node Server 
app.post("/usuario/salvar",function (req, res){ 
usuario = req.params.usuario; 
if(usuario.nome == null){ 
    console.error("Ocorreu algum problema"); 
    res.status(500).send('Acontenceu algum problema!'); 
}else{ 
    MongoClient.connect(url, function (err, db) { 
     if (err){ 
     console.error(err.stack); 
     res.status(500).send('Acontenceu algum problema!'); 
     }else { 
     var collection = db.collection('usuarios'); 

     //Salvar Usuario 
     var salva_usu = {nome: usuario.nome, email: usuario.email, senha: usuario.senha}; 

     collection.insert(salva_usu, function (err, result) { 
      if (err){ 
      console.error("Ocorreu algum problema"); 
      res.status(500).send('Acontenceu algum problema!'); 
      }else res.status(200).send("Salvo!"); 
     }); 

     //Fecha a conexão 
     db.close(); 
     } 
    }); 
} 

})

回答

0

這是更常見的是在POST發送使用data參數,尤其是你是一個對象,而不是字符串。

您可以嘗試修改您的代碼以使用data,或發送3個不同的params所需的3個字符串。

我個人更喜歡第一種方式,因爲您的數據包含一個密碼,如果它附加在請求URL中,看起來不太好。

0

請求的數據在data屬性下可用。

此外,它很可能只是一個JSON文字 - 也就是JS String。用JSON.parse()解析!

只需更換:

app.post("/usuario/salvar",function (req, res) { 
    usuario = req.params.usuario; 
    // ... 

通過:

app.post("/usuario/salvar",function (req, res) { 
    usuario = JSON.parse(req.data).params.usuario;