Есть ли способ автоматически сгенерировать ObjectId, когда мангуста-модель new'ed?

Есть ли способ объявить схему модели в mongoose, чтобы при новом создании модели поле _id генерировалось автоматически?

например:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectIdSchema = Schema.ObjectId;
var ObjectId = mongoose.Types.ObjectId;

var PersonSchema = new Schema({
    _id:            ObjectIdSchema,
    firstName:      {type: String, default: 'N/A'},
    lastName:       {type: String, default: 'N/A'},
    age:            {type: Number, min: 1}
});

var Person = mongoose.model('Person', PersonSchema);

Сначала я подумал, что отлично! Я просто сделаю

_id:    {type:ObjectIdSchema, default: new ObjectId()}

но, конечно, это не работает, потому что new ObjectId () вызывается только при инициализации схемы. поэтому вызов new Persion () дважды создает два объекта с одинаковым значением _id.

так есть ли способ сделать это так, чтобы каждый раз, когда я делаю & quot; new Person () & quot; что новый ObjectId () генерируется?

причина, по которой я пытаюсь это сделать, заключается в том, что мне нужно знать значение _id нового человека для дальнейшей обработки.

я также попробовал:

var person = new Person({firstName: "Joe", lastName: "Baz"});
person.save(function(err, doc, num){
    console.log(doc._id);
});

даже в этом случае документ не содержит ObjectId. но если я загляну в базу данных, она там есть.

постскриптум я использую мангуст 2.7.1

p.p.s. я знаю, что могу вручную создать ObjectId при создании человека как такового:

var person = new Person({_id: new ObjectId(), firstName: "Joe", lastName: "Baz"});

но я скорее не должен импортировать ObjectId и должен обновлять его каждый раз, когда я хочу создать нового человека. думаю, я привык использовать java-драйвер для mongodb, где я могу просто создать значение для поля _id в конструкторе модели.

Ответы на вопрос(4)

Ваш ответ на вопрос