使用NodeJS将此文档导入MongoDB时,使用文档的值作为_id

时间:2015-08-30 16:56:41

标签: node.js mongodb mongoose

我试图将一个Object导入Mongo。但是当我尝试将Object的值用作_id时,它会失败。错误,即:" [CastError:转换为ObjectID失败,值为" 11563195"在路径" _id"]"以及" [错误:文档在保存前必须有_id]"

我做错了什么?

// Read and import the CSV file.
    csv.fromPath(filePath, {
        objectMode: true,
        headers: keys
    })
    .on('data', function (data) {

        setTimeout(function(){

            var Obj = new models[fileName](data);
            Obj._id = Obj.SOME_ID;

            Obj.save(function (err, importedObj) {

                if (err) {

                    console.log(err);

                } else {

                    console.log('Import: OK');

                }
            });

        }, 500);
    })

以下是使用的架构:

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;

    var SomeSchema = new Schema(
        {
            SOME_ID: String,
            FIELD01: String,
            FIELD02: String,
            FIELD03: String,
            FIELD04: String,
            FIELD05: String,
            FIELD06: String,
            FIELD07: String,
            FIELD08: String,
            FIELD09: String,
            FIELD10: String,
            FIELD11: String,
            FIELD12: String,
            FIELD13: String
        },
        {
            collection: 'SomeCollection'
        });

module.exports = mongoose.model('SomeCollection', SomeSchema);

非常感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:0)

默认情况下,mongoose验证_id字段是MongoId。如果你想在_id字段中存储除MongoId以外的东西,你需要给_id字段一个不同的类型。

var SomeSchema = new Schema({
    _id: { type: String, required: true }
}