2016-11-08 144 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;