Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将用户对象作为参数传递给node.js的Express api,如asp.net_Javascript_Asp.net_Node.js - Fatal编程技术网

Javascript 如何将用户对象作为参数传递给node.js的Express api,如asp.net

Javascript 如何将用户对象作为参数传递给node.js的Express api,如asp.net,javascript,asp.net,node.js,Javascript,Asp.net,Node.js,我正在学习node.js,我需要将一个用户对象传递给node.js的Express api,关于我的问题,我看到的文档很少,但都是关于bodyparser的。但是我需要知道bodyparser是解决这个问题的唯一好方法,或者我可以像.Net/Java那样将用户对象作为对象类型数据类型发送。我需要完全按照给定的.net示例发送对象 用户对象 ASP.NET方法 如果我通过ajax发送上述用户,它将自动与我的asp.net方法的参数user u匹配 public IHttpActionResult

我正在学习node.js,我需要将一个用户对象传递给node.js的Express api,关于我的问题,我看到的文档很少,但都是关于bodyparser的。但是我需要知道bodyparser是解决这个问题的唯一好方法,或者我可以像.Net/Java那样将用户对象作为对象类型数据类型发送。我需要完全按照给定的.net示例发送对象

用户对象

ASP.NET方法 如果我通过ajax发送上述用户,它将自动与我的asp.net方法的参数user u匹配

public IHttpActionResult Save(User u)
{
    return Ok(_userService.Save(u));
}
Js


好的,使用上面的例子

假设我们有JSON post请求->

{
    "Id":1,
    "FullName":"Mr. X"
}
使用JS,您可以创建一个包装器函数来处理这个问题,而不是使用所有用于错误处理等的锅炉代码。从你的使用承诺来看,这甚至更好

所以我们追求的是->

router.post('/save', handlePost((user) => userServices.Save(user)) );
对我来说,这看起来与ASP版本非常相似,事实上它在显示路由/保存时做得更多,而您在ASP版本中没有显示路由/保存

所以下一步是创建handlePost函数

function handlePost(func) {
  return (req, res) => {
    func(req.body).then((results) => {
      res.send(results);
    }).catch((reason) => {
      res.status(500).send(reason);
    });    
  }
}
希望这就是你想要的


当然,如果使用承诺,handlePost可以重新用于您的所有请求,事实上不仅仅是Post请求,所以我真的应该将其命名为handleReq,。甚至可以像ASP一样正常。

它的发音是you zer not ooze er,所以它应该是一个用户,而不是一个用户……谢谢@musefan,编辑。现在还不清楚到底是什么问题。。。您是说当您传递第一个示例中定义的对象时,node.js代码不起作用吗?你有具体的错误吗?或者你能描述一下实际发生的不正确的事情吗?这可能有助于准确显示您试图分配给parami的内容。如果没有任何错误,我需要知道将对象用户传递给node.js的最佳方法。谢谢,如果它起作用了,那么我觉得这个很好。听起来你好像在试图预测一个将来可能永远不会发生的问题,你不喜欢这种方法吗?那么userServices.Save并没有返回一个承诺。
router.post('/save', handlePost((user) => userServices.Save(user)) );
function handlePost(func) {
  return (req, res) => {
    func(req.body).then((results) => {
      res.send(results);
    }).catch((reason) => {
      res.status(500).send(reason);
    });    
  }
}