Express:将req.body对象中的数组分配给各个变量
Express: Assigning arrays within req.body object to individual variables
我在让Express和body解析器读取我的应用程序Angular端发送的JSON对象时遇到了不少麻烦。根据我的尝试,我的变量赋值语法在某种程度上似乎不稳定。到目前为止,我已经尝试了很多不同的语法,但都没有成功,所以我希望有人能帮助我找出正确的方法,将请求体中的各个位分配到它们的相关变量中。
以下是我迄今为止所做的一些故障排除:
-
验证了我想要发送的对象和数据是否真的被张贴了。
-
验证内容类型是否为"application/json"。
-
验证body解析器是否正在处理请求,req.body是否已填充数据。
-
尝试使用和不使用"application/json"作为内容类型的显式设置,结果没有任何变化。
以下是$http如何在Angular方面发送数据:
.controller ('Ctrl', function($scope, $http) {
$scope.generateLabel = function(){
var httpData = [
{"addressToName": $scope.addressToName},
{"addressToStreet1": $scope.addressToStreet1},
{"addressToCity": $scope.addressToCity},
{"addressToState": $scope.addressToState},
{"addressToZip": $scope.addressToZip},
{"addressToEmail": $scope.addressToEmail},
{"parcelType": $scope.parcelType},
{"note": $scope.note},
{"sku": $scope.sku}];
$http({
method: 'POST',
url: '/postURL',
headers: {
'Content-Type': "application/json"
},
data: httpData
});
};
这是我的特快专递路线的相关部分:
var bodyParser = require('body-parser');
app.use(bodyParser.json({strict: false}));
app.post('/postURL', function(req, res) {
var addressToName = req.body.addressToName;
var addressToStreet1 = req.body.addressToStreet1;
var addressToCity = req.body.addressToCity;
var addressToState = req.body.addressToState;
var addressToZip = req.body.addressToZip;
var addressToCountry = 'US';
var addressToEmail = req.body.addressToEmail;
}
以下是我测试时在节点控制台中看到的内容。顶部消息来自body解析器的调试模式,然后是原始req.body,然后是我试图将它们分配给的变量:
body-parser:json content-type "application/json" +0ms
body-parser:json content-encoding "identity" +2ms
body-parser:json read body +1ms
body-parser:json parse body +13ms
body-parser:json parse json +1ms
Request body follows:
[ { addressToName: 'My name' },
{ addressToStreet1: 'My address' },
{ addressToCity: 'Anytown' },
{ addressToState: 'OR' },
{ addressToZip: '97504' },
{ addressToEmail: 'My@email.com' },
{ parcelType: '8lb Box' },
{ note: '12314' },
{ sku: '11111' } ]
Variables assigned:
{ addressToName: undefined,
addressToStreet1: undefined,
addressToCity: undefined,
addressToState: undefined,
addressToZip: undefined,
addressToCountry: 'US',
addressToEmail: undefined }
看起来req.body
是具有属性的对象数组,而不是具有属性本身的对象。你的JS必须是:
var addressToName = req.body[0].addressToName;
var addressToStreet1 = req.body[1].addressToStreet1;
// etc.
我建议Angular将所有这些属性放在一个对象中,比如:
var httpData = {
"addressToName": $scope.addressToName,
"addressToStreet1": $scope.addressToStreet1,
// etc.
};
那么您现有的JS应该可以工作了。
相关文章:
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- 将数组的拼接分配给自身时,Javascript控制台打印不起作用
- 在将csv文件中的数据分配给数组变量时增强了d3代码
- 当数组在angularjs中没有可比较的值时,如何分配默认值
- 使用mysql为JSON php数组分配多个列值
- 处理对象数组并将它们以 4 个为一组进行分配
- 可以't分配给一个对象数组javascript
- Javascript原型通用Enquries和通过数组索引分配Id
- 通过程序将对象分配给数组
- 将随机整数分配给数组中的项,summa应该是一个固定的数字
- JavaScript's数组过滤器函数在没有分配函数的情况下使用-这里发生了什么
- 选择多个复选框并将值分配给数组 - HTML/Javascript
- 如何在 ng-repeat 中按键分配对象数组
- JS循环图像文件夹,预加载它们并分配给数组
- Javascript:分配给对象或数组原型会导致括号不起作用
- Java 脚本数组分配错误
- jQuery将值分配给数组,给出错误未定义的变量
- 如何拆分数组或分配键,jquery
- Dojo 解析器分配值数组而不是值
- 分配给多维数组 javascript