我正在开发一个构建Web应用程序并自学node.js
的个人项目。我正在处理的部分包括上传CSV文件,将CSV数据更改为JSON对象并将其保存在mongodb中的字段中
使用mongoose我定义了这个模型。我使用Robomongo来查看数据库的内容,我可以看到电子邮件和密码字段没有问题
var userDataModel = new schema({
email: {
type: String,
required: true,
unique: true,
validate: [validator.email, 'Not a valid email address!']
},
hashedPassword: {
type: String,
required: true,
validate: [checkLength, 'The Password is too short! Passwords must be at least '+REQ_PASS_LENGTH+' characters!']
},
savedGraphs:{},
uploadedFiles:{}
})
以下是我编写的文件处理模块,用于调用我在路由处理期间使用来自包含csv文件的表单的post请求。
var Converter = require("csvtojson").core.Converter
var currentdate = new Date()
exports.verifyFileTypeCSV = verifyFileTypeCSV
exports.saveFileDataCSV = saveFileDataCSV
function verifyFileTypeCSV(fileType){
if(fileType!='application/csv'){
return false
}
else{
return true
}
}
function saveFileDataCSV(file, username, password, model){
model.findOne({ email : username },
function(err, user) {
if (err){
console.log('err')
}
if (!user){
console.log('no user found!')
}
else{
var csvConverter = new Converter()
csvConverter.on("end_parsed",function(jsonObj){
jsonObj.date = currentdate.getDate()
user.uploadedFiles = jsonObj
})
csvConverter.from(file)
}
})
}
所有代码似乎都在执行,我执行的操作与保存用户名/ pass完全相同但是一旦我运行它并检查数据库,userModel就不会包含已解析的CSV数据。我已将数据打印到控制台等,因此它被正确解析,这不是我的问题。
P.S
这是我目前正在玩的代码,因此if/else
部分有控制台语句而没有别的。
答案 0 :(得分:1)
您缺少将用户对象保存回MongoDB。 尝试添加:
csvConverter.on("end_parsed",function(jsonObj){
jsonObj.date = currentdate.getDate();
user.uploadedFiles = jsonObj;
user.save();
});
我还建议您在语句末尾添加分号,因为它会使您的代码更具可读性。