mongoose模型字段没有出现在mongoDB中

时间:2014-03-12 21:29:56

标签: javascript node.js mongodb express mongoose

我正在开发一个构建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部分有控制台语句而没有别的。

1 个答案:

答案 0 :(得分:1)

您缺少将用户对象保存回MongoDB。 尝试添加:

   csvConverter.on("end_parsed",function(jsonObj){
         jsonObj.date = currentdate.getDate();
         user.uploadedFiles = jsonObj;
         user.save();
   });

我还建议您在语句末尾添加分号,因为它会使您的代码更具可读性。