Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 当一个猫鼬模型新建时,是否有一种自动生成ObjectId的方法?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
是否有一种方法可以在mongoose中声明一个模型模式,以便当模型被新建时,_id字段将自动生成

例如:

var mongoose = require('mongoose');
var scheR_972_11845@a = mongoose.scheR_972_11845@a;
var ObjectIdscheR_972_11845@a = scheR_972_11845@a.objectId;
var ObjectId = mongoose.Types.ObjectId;

var PersonscheR_972_11845@a = new scheR_972_11845@a({
    _id:            ObjectIdscheR_972_11845@a,firstName:      {type: String,default: 'N/A'},lastName:       {type: String,age:            {type: number,min: 1}
});

var Person = mongoose.model('Person',PersonscheR_972_11845@a);

起初我觉得很棒!我会做的

_id:    {type:ObjectIdscheR_972_11845@a,default: new ObjectId()}

但是当然这不起作用,因为只有在初始化模式时才调用新的ObjectId().所以调用新的Persion()两次会创建两个具有相同_id值的对象.

所以有办法做到这一点,每次我做“新的Person()”一个新的ObjectId()生成

我试图这样做的原因是因为我需要知道新人的_id值的价值以进一步处理.

我也试过:

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

即使这样,doc也不包含ObjectId.但是如果我查看数据库,它确实包含它.

附:我正在使用mongoose 2.7.1

p.p.s.我知道我可以在创建人时手动创建ObjectId:

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

但我宁愿不必导入ObjectId,并且每次要新建一个Person时都需要新的.猜测我习惯于为mongodb使用java驱动程序,我可以在Model构造函数中创建_id字段的值.

解决方法

调用var person = new Person()的那一刻; person._id应该给你id(即使它还没有被保存).只是实例化它足以给它一个id.您仍然可以保存它,并且将存储id以及其余的person对象

大佬总结

以上是大佬教程为你收集整理的node.js – 当一个猫鼬模型新建时,是否有一种自动生成ObjectId的方法?全部内容,希望文章能够帮你解决node.js – 当一个猫鼬模型新建时,是否有一种自动生成ObjectId的方法?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。