为什么mongo中的新文档有对象而不是ObjectId?

ale*_*ck3 5 javascript mongoose mongodb

在mongodb中插入新文档时,ID看起来不像ObjectId,而是看起来像一个对象.

"_id" : {
        "_bsontype" : "ObjectID",
        "id" : "U\u0013[-Ф~\u001d$©t",
        "generationTime" : 1.43439e+09
}
Run Code Online (Sandbox Code Playgroud)

预期类型:

"_id" : ObjectId("55107edd8e21f20000fd79a6")
Run Code Online (Sandbox Code Playgroud)

我的mongodb版本是3.0.3,这几乎是代码和架构

var Script = {
    run: function() {
        return CourseModel.findQ()
        .then(function(courses){
            return courses.map(worker);
        }).catch(function(error){
            console.log(error);
        });
    }
};

function worker(course){
    var category = { name: course.name, displayOrder: 0 };
        return CategoryModel.createQ(category).then(function() {
            course.set('name', undefined);
            return course.saveQ();
        });
}
module.exports = Script;

var CategorySchema = new Schema({
    name: {
        type: String,
        required: true,
        unique: true
    },
    active: {
        type: Boolean,
        default: true
    },
    displayOrder: Number,
    updateDate: Date,
    subcategories: [{
        type: Schema.Types.ObjectId,
        ref: 'subcategories'
    }]
});
Run Code Online (Sandbox Code Playgroud)

Dou*_*eux 1

格式错误的 ObjectId 是由 mongoose-q 使用的 mongoose 版本冲突引起的。您需要将 mongoose-q 更新到版本 0.1.0。我之前使用的是 0.0.17,看到的行为与您在此处看到的行为完全相同。