Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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
Node.js 在angular4服务中传递参数_Node.js_Angular_Angular Services_Nodeapi - Fatal编程技术网

Node.js 在angular4服务中传递参数

Node.js 在angular4服务中传递参数,node.js,angular,angular-services,nodeapi,Node.js,Angular,Angular Services,Nodeapi,嘿,我一直在尝试将两个参数从角度前端传递到节点api。然而,当我运行我的应用程序时,我在节点控制台上发现一个错误,即参数值丢失或无效。 下面是节点api代码 app.post('/users', function(req, res) { var username = req.body.username; var orgName = req.body.orgName; logger.debug('End point : /users'); logger.debug('User name : ' +

嘿,我一直在尝试将两个参数从角度前端传递到节点api。然而,当我运行我的应用程序时,我在节点控制台上发现一个错误,即参数值丢失或无效。 下面是节点api代码

app.post('/users', function(req, res) {
var username = req.body.username;
var orgName = req.body.orgName;
logger.debug('End point : /users');
logger.debug('User name : ' + username);
logger.debug('Org name  : ' + orgName);
if (!username) {
    res.json(getErrorMessage('\'username\''));
    return;
}
if (!orgName) {
    res.json(getErrorMessage('\'orgName\''));
    return;
}
var token = jwt.sign({
    exp: Math.floor(Date.now() / 1000) + parseInt(config.jwt_expiretime),
    username: username,
    orgName: orgName
}, app.get('secret'));
helper.getRegisteredUsers(username, orgName, true).then(function(response) {
    if (response && typeof response !== 'string') {
        response.token = token;
        res.json(response);
    } else {
        res.json({
            success: false,
            message: response
        });
    }
});
})

这是我的角度服务代码。为了演示,我正在从角度服务传递虚拟值

getEnrollmentId(userName,org) {
let headers = new Headers({ 'Content-Type': 'x-www-form-urlencoded' });
let options = new RequestOptions({ headers: headers });
let body = "'username=Barry&orgName=org2'";
return this.http.post('http://localhost:4000/users', body, options )
.map((res: Response) => res.json())
.catch((error:any) => Observable.throw(error.json().error || 'Server error shit'));
}

当我试图通过调用节点api并传递参数来使用curl查询实现同样的目标时,我能够成功地发布数据并从api返回响应。下面是curl查询

 curl -s -X POST \
 http://localhost:4000/users \
 -H "content-type: application/x-www-form-urlencoded" \
 -d 'username=Jim&orgName=org1'

我在angular services中做错了什么?

将参数作为url搜索参数传递, 下面的代码应该有帮助

let body = new URLSearchParams();
body.set('username', username);
body.set('orgName', orgName);

它不起作用。在我的节点api中,它正在接收这些参数的未定义值。这是一个节点控制台的屏幕截图,您是如何定义变量SUSERNAME和orgName的,它保存了值。这是gist链接,其中包含调用角度服务的组件代码和从前端检索值的角度前端html代码。html用于同一个组件,为什么要使用@input。这是一个简单的双向角度绑定,将它们定义为简单的公共变量,它将用值绑定到前端,您不会得到未定义的变量我在前端html代码上做了一些错误的事情,因为当我从组件打印这些变量值时,它显示为未定义。