【问题标题】:mongoose model fields not appearing in mongoDBmongoose 模型字段未出现在 mongoDB 中
【发布时间】:2014-03-13 15:08:16
【问题描述】:

我正在从事一个构建 Web 应用程序并自学 node.js 的个人项目。我正在处理的部分涉及上传 CSV 文件,将 CSV 数据更改为 JSON 对象并将其保存在 mongodb 的字段中

使用猫鼬我已经定义了这个模型。我正在使用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)
            }
    })
}

所有代码似乎都在执行,我正在做与保存用户名/密码完全相同的事情,但是一旦我运行它并检查数据库,userModel 将不会包含解析的 CSV 数据。我已经将数据打印到控制台等,所以它被正确解析,这不是我的问题。

附言

这是我目前正在使用的代码,因此 if/else 部分只有控制台语句,没有其他内容。

【问题讨论】:

  • 这里缺少很多东西。我没有看到 user.save() 语句。你有吗?

标签: javascript node.js mongodb express mongoose


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    相关资源
    最近更新 更多