ng-file-upload 没有达到正确的端点
ng-file-upload not hitting correct endpoint
我正在使用 MEANJS。我在客户端使用 ng-file-upload
上传文件。问题是,在我为上传定义的 url
中,其中没有参数,但是当到达端点时,它会调用它认为其中有参数的函数。这个 upload
是在创建一个新的 activity
时完成的(activities
与默认的 articles
结构相同)
控制器:
function save(isValid) {
Upload.upload({
url: 'api/activities/gpxData', // no optional parameter ':activityId'
data: {
file: $scope.gpxData
}
}).then(function(resp) {
console.log(resp);
}, function(resp) {
console.log(resp)
}, function(evt) {
}
});
}
这些都是我route
定义的:
app.route('/api/activities').all(activitiesPolicy.isAllowed)
.get(activities.list)
.post(activities.create);
app.route('/api/:userId/activities').all(activitiesPolicy.isAllowed)
.get(activities.usersActivities)
.post(activities.create);
app.route('/api/activities/:activityId').all(activitiesPolicy.isAllowed)
.get(activities.read)
.put(activities.update)
.delete(activities.delete);
app.route('/api/:userId/activities/:activityId').all(activitiesPolicy.isAllowed)
.get(activities.read)
.put(activities.update)
.delete(activities.delete);
app.route('/api/activities/gpxData').all(activitiesPolicy.isAllowed)
.post(activities.uploadGpx);
// Finish by binding the Activity middleware
app.param('activityId', activities.activityByID);
即使在 url
中没有传递可选参数 (activityId
),也会调用函数 activities.activityByID
这个:
exports.activityByID = function (req, res, next, id) {
if (!mongoose.Types.ObjectId.isValid(id)) {
return res.status(400).send({
message: 'Activity is invalid'
});
}
};
此外, 中传递了一个 id
(这是正在创建的 activity
的 id
) 但我知道不知道来自哪里,它不是有效的 id
,因为它尚未输入 mongo。
是您的快递码中的路由排序导致的。因为 /api/activities/gpxData 适合模式 /api/activities/:activityId。
路由在第一个匹配规则处停止并执行。这是各种技术中路由的标准实现。
移动
app.route('/api/activities/gpxData').all(activitiesPolicy.isAllowed)
.post(activities.uploadGpx);
之前
app.route('/api/activities/:activityId').all(activitiesPolicy.isAllowed)
.get(activities.read)
.put(activities.update)
.delete(activities.delete);
然后尝试运行。
我正在使用 MEANJS。我在客户端使用 ng-file-upload
上传文件。问题是,在我为上传定义的 url
中,其中没有参数,但是当到达端点时,它会调用它认为其中有参数的函数。这个 upload
是在创建一个新的 activity
时完成的(activities
与默认的 articles
结构相同)
控制器:
function save(isValid) {
Upload.upload({
url: 'api/activities/gpxData', // no optional parameter ':activityId'
data: {
file: $scope.gpxData
}
}).then(function(resp) {
console.log(resp);
}, function(resp) {
console.log(resp)
}, function(evt) {
}
});
}
这些都是我route
定义的:
app.route('/api/activities').all(activitiesPolicy.isAllowed)
.get(activities.list)
.post(activities.create);
app.route('/api/:userId/activities').all(activitiesPolicy.isAllowed)
.get(activities.usersActivities)
.post(activities.create);
app.route('/api/activities/:activityId').all(activitiesPolicy.isAllowed)
.get(activities.read)
.put(activities.update)
.delete(activities.delete);
app.route('/api/:userId/activities/:activityId').all(activitiesPolicy.isAllowed)
.get(activities.read)
.put(activities.update)
.delete(activities.delete);
app.route('/api/activities/gpxData').all(activitiesPolicy.isAllowed)
.post(activities.uploadGpx);
// Finish by binding the Activity middleware
app.param('activityId', activities.activityByID);
即使在 url
中没有传递可选参数 (activityId
),也会调用函数 activities.activityByID
这个:
exports.activityByID = function (req, res, next, id) {
if (!mongoose.Types.ObjectId.isValid(id)) {
return res.status(400).send({
message: 'Activity is invalid'
});
}
};
此外, 中传递了一个 id
(这是正在创建的 activity
的 id
) 但我知道不知道来自哪里,它不是有效的 id
,因为它尚未输入 mongo。
是您的快递码中的路由排序导致的。因为 /api/activities/gpxData 适合模式 /api/activities/:activityId。 路由在第一个匹配规则处停止并执行。这是各种技术中路由的标准实现。
移动
app.route('/api/activities/gpxData').all(activitiesPolicy.isAllowed)
.post(activities.uploadGpx);
之前
app.route('/api/activities/:activityId').all(activitiesPolicy.isAllowed)
.get(activities.read)
.put(activities.update)
.delete(activities.delete);
然后尝试运行。