我在运行客户端函数后更新/保存用户时出现问题,该函数将_id(另一个名为course的模块)添加到用户。我所拥有的概述是一个名为课程的CRUD模块,我希望用户能够加入该课程,所以这样做的功能如下 (courses.client.controller.js):
$scope.joinCourse = function() {
var course = $scope.course;
var user = $scope.authentication.user;
var flag = false;
if ($scope.insertedCCode === course.courseCode) {
for (var i in user.joinedCourses) {
if (user.joinedCourses[i] === course._id) {
flag = true; // Already joined the course
}
}
if (!flag) {
user.joinedCourses.push(course._id);
}
course.$updateUser(function(response) {
$scope.success = true;
Authentication.user = response;
}, function(response) {
$scope.error = response.data.message;
});
}
updateUser是我用来保存对用户所做的新更改的服务器端功能,但我不确定这是否是添加或使用后端功能的正确方法。它与更新配置文件更改时完全相同。如果我在加入课程后更新我的个人资料,我发现它会保存课程。
exports.updateUser = function(req, res) {
// Init Variables
var user = req.user;
var message = null;
// For security measurement we remove the roles from the req.body object
delete req.body.roles;
if (user) {
// Merge existing user
user = _.extend(user, req.body);
user.updated = Date.now(); // Join date??
user.save(function(err) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
req.login(user, function(err) {
if (err) {
res.status(400).send(err);
} else {
res.json(user);
}
});
}
});
} else {
res.status(400).send({
message: 'User is not signed in'
});
}};
当我运行joinCourse函数时,它会给出TypeError的错误:undefined不是Scope。$ scope.joinCourse中的函数,在课程的行中。$ updateUser被调用(来自块1)。所以我传递了与用户相同的东西。$ update需要,为什么它不起作用?
要彻底解决这个问题,我试图从其他模块更新用户,而且我不确定如何做到这一点。
非常感谢任何帮助!