我正在使用Express.js和SQL Server创建API。我一直在发布一个简单且非常简单的对象,但是现在我有了一个新问题:如何发布一个数组?
假设我有一个只存储两个参数的表:
Table_A
Id | CouponId
事实上,唯一存储的记录是CouponId
,因为SQL Server在每条记录上都创建了Id
。因此,这种情况是,我从api中获得了优惠券列表,其想法是使用复选框从一个到'n'进行选择并保存选择。
到目前为止,这是我的代码:
function getList(){
$http.get('/api/coupons')
.then(function(data){
$scope.infoCoupons = data.data.Response;
}
在HTML视图上:
<div class="col-lg-12" align="center">
<input type="checkbox" ng-click="selectAll()"/> <a style="font-size:17px;color:black;text-decoration:none;">Select all coupons</a>
<ul class="coupon-list">
<li ng-repeat="coupon in infoCoupons">
<input type="checkbox" ng-model="coupon.Select" ng-click="checked"/> <a style="font-size:17px;color:black;text-decoration:none;">{{coupon.CodeCoupon}}</a>
</li>
</ul>
</div>
然后,获取选定的优惠券:
$scope.selectAll = function(){
$scope.all = !$scope.all;
$scope.infoCoupons.forEach(function(o){
o.Select = $scope.all;
});
}
function chosenCoupons(){
var result = new Array();
var checked = 0;
$scope.infoCoupons.forEach(function(e){
if(e.Select === true){
result.push(e.Id);
checked +=1;
}
});
if($scope.all || checked > 0){
alert("Selected coupons!");
}
else if(checked === 0){
alert("Select at least one coupon");
}
}
然后,我的API代码:
const express = require('express');
const bodyParser = require('body-parser');
const sql = require('mssql');
const app = express();
app.use(bodyParser.json());
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, contentType,Content-Type, Accept, Authorization");
next();
});
const dbConfig = {
user: "daUser",
password: "daPass",
server: "daServa",
database: "daDB"
};
const executeQuery = function (res, query, parameters) {
sql.connect(dbConfig, function (err) {
if (err) {
console.log(`There's an error: ${err}`);
res.send(err);
sql.close();
}
else {
var request = new sql.Request();
if (parameters && parameters.length > 0) {
parameters.forEach(function (p) {
request.input(p.name, p.sqltype, p.value);
});
}
request.query(query, function (err, result) {
if (err) {
console.log(`Theres an error: ${err}`);
res.send(err);
sql.close();
}
else {
res.send(result);
sql.close();
}
});
}
});
}
app.post("/api/testApi", function(req, res){
parameters = [
{ name: 'CouponId', sqltype: sql.VarChar, value: req.body.CouponId }
];
var query = "INSERT INTO [Table_A] VALUES(@CouponId)";
executeQuery(res, query, parameters);
});
const PORT = process.env.PORT || 8080
app.listen(PORT, () => {
console.log(`App running on port ${PORT}`)
});
这是通常用于对象的代码。我的问题是:如何在API上发送result
(结果是获得的数组)。我需要更改我在parameters
上的代码吗?
希望您能帮助我。我正在使用Javascript,Node,Express和SQL Server。
答案 0 :(得分:0)
在角度上,您只需执行$http.post(url, data)
。
如果将数据分配给具有数组的对象,它将达到express。
然后,由于您拥有app.use(express.bodyParser());
,因此express可以解析正文,因此该对象应该可以在正文上使用。
如果您尝试使用查询参数来传递数组,请在属性items
上说,这样就可以多次声明它
items=1&items=2&items=3
应该解析为req.query.items === [1,2,3]