【发布时间】:2015-11-13 01:21:17
【问题描述】:
我正在使用 mongoose 和 mongodb 开发一个 nodejs 项目,在处理个人资料更新逻辑时,我尝试将一些数据发布到服务器,包括个人资料照片上传,我使用强大来处理文件上传并且有没问题,但是即使没有任何错误消息,我的其他表单字段也没有保存,下面是路由代码,请帮助我哪里出错了。
router.post('/api/profileUpdate/:username', function(req, res, next) {
User.findOne({
username: req.params.username
}, function(err, user) {
if (err) {
console.log(err);
} else {
if (user) {
console.log('user found, going to update ...');
user.age = req.body.age;
user.gender = req.body.gender;
user.description = req.body.description;
user.occupation = req.body.occupation;
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files) {
//res.writeHead(200, {'content-type': 'text/plain'});
//res.write('received upload:\n\n');
res.end(util.inspect({fields: fields, files: files}));
});
form.on('end', function(fields, files) {
console.log(fields);
console.log(req.body.age);
console.log(files);
if (this.openedFiles[0]) {
/* Temporary location of our uploaded file */
var temp_path = this.openedFiles[0].path;
/* The file name of the uploaded file */
var file_name = this.openedFiles[0].name;
/* Location where we want to copy the uploaded file */
var new_location = 'public/images/uploads/';
fs.copy(temp_path, new_location + file_name, function(err) {
if (err) {
console.error(err);
} else {
user.profile_photo = '/images/uploads/' + file_name + '?dim=200';
console.log(user.profile_photo);
console.log("success!")
// save the data
user.save(function(err) {
if (err){
console.log('Error in Saving user: '+err);
throw err;
}
console.log('User update succesful');
console.log(user.username);
console.log(user.profile_photo);
});
}
});
}
else {
}
});
res.redirect(req.url);
}
}
});
});
【问题讨论】:
-
代码是否显示“成功!”控制台中的消息?此外,您在外部 if/else 块中有一个不执行任何操作的 else 条件。现在,在该分支中编写一个调试消息到控制台可能会有所帮助。
-
嗨基普,是的,有“成功!”消息显示,还显示用户名和文件路径,文件成功上传到服务器,只是mongodb数据没有更新,似乎没有捕获字段数据,但没有显示错误
-
嗯...我之前没有看到提到的线程,但我的情况可能不一样,因为我可以找到用户记录,只是更新没有被触发,是否相关对强大的异步请求,因为似乎帖子数据丢失了?
-
有趣的想法。您可以通过注释掉整个强大的部分并在文件上传上方添加与此类似的代码来测试它: user.profile_photo = 'TEST'; user.save(function(err){...}
标签: javascript node.js mongodb model save