在 Sails 中创建应用程序时如何覆盖 Mongo 数据库中的对象 ID
How to overwrite object Id's in Mongo db while creating an App in Sails
我是 Sails 和 Mongo Db 的新手。目前我正在尝试使用 Sails 实现一个 CRUD 函数,我想在 Mongo db.In 模型中保存用户详细信息我具有以下属性
"id":{
type:'Integer',
min:100,
autoincrement:true
},
attributes: {
name:{
type:'String',
required:true,
unique:true
},
email_id:{
type:'EMAIL',
required:false,
unique:false
},
age:{
type:'Integer',
required:false,
unique:false
}
}
我想确保 _id 被我从 100 开始的值覆盖,并随着每个新条目自动递增。我正在使用水线模型,当我在 DHC 中调用 Api 时,我得到以下输出
"name": "abc"
"age": 30
"email_id": "abc@gmail.com"
"id": "5587bb76ce83508409db1e57"
这里给定的 Id 是对象 Id.Can 有人告诉我如何用从 100 开始的整数覆盖对象 id,并随着每个新值自动递增。
注意: Mongo id 应该是 unique as possible in order to scale well. The default ObjectId 由时间戳、机器ID、进程ID和随机递增值组成。只保留后者会使它容易发生碰撞。
但是,有时您非常想美化 never-ending ObjectID 值(即显示在 encoding 之后的 URL 中)。那么,你应该考虑使用合适的原子增量策略.
Overriding _id 示例:
db.testSOF.insert({_id:"myUniqueValue", a:1, b:1})
制作 Auto-Incrementing Sequence:
- 使用计数器Collection:基本上是一个单独的collection,它跟踪序列的最后一个数字。就个人而言,我发现将 findAndModify 函数存储在 system.js collection 中更具凝聚力,尽管它具有 lacks 版本控制的功能。
- 乐观循环
编辑:
我找到了一个 issue,其中 sails-mongo 的所有者说:
MongoDb doesn't have an auto incrementing attribute because it doesn't
support it without doing some kind of manual sequence increment on a
separate collection or document. We don't currently do this in the
adapter but it could be added in the future or if someone wants to
submit a PR. We do something similar for sails-disk and sails-redis to
get support for autoIncremeting fields.
他提到了我在这个答案中添加的第一种技术:
使用计数器Collection。在同一个问题中,lewins 显示了一个解决方法。
我是 Sails 和 Mongo Db 的新手。目前我正在尝试使用 Sails 实现一个 CRUD 函数,我想在 Mongo db.In 模型中保存用户详细信息我具有以下属性
"id":{
type:'Integer',
min:100,
autoincrement:true
},
attributes: {
name:{
type:'String',
required:true,
unique:true
},
email_id:{
type:'EMAIL',
required:false,
unique:false
},
age:{
type:'Integer',
required:false,
unique:false
}
}
我想确保 _id 被我从 100 开始的值覆盖,并随着每个新条目自动递增。我正在使用水线模型,当我在 DHC 中调用 Api 时,我得到以下输出
"name": "abc"
"age": 30
"email_id": "abc@gmail.com"
"id": "5587bb76ce83508409db1e57"
这里给定的 Id 是对象 Id.Can 有人告诉我如何用从 100 开始的整数覆盖对象 id,并随着每个新值自动递增。
注意: Mongo id 应该是 unique as possible in order to scale well. The default ObjectId 由时间戳、机器ID、进程ID和随机递增值组成。只保留后者会使它容易发生碰撞。
但是,有时您非常想美化 never-ending ObjectID 值(即显示在 encoding 之后的 URL 中)。那么,你应该考虑使用合适的原子增量策略.
Overriding _id 示例:
db.testSOF.insert({_id:"myUniqueValue", a:1, b:1})
制作 Auto-Incrementing Sequence:
- 使用计数器Collection:基本上是一个单独的collection,它跟踪序列的最后一个数字。就个人而言,我发现将 findAndModify 函数存储在 system.js collection 中更具凝聚力,尽管它具有 lacks 版本控制的功能。
- 乐观循环
编辑:
我找到了一个 issue,其中 sails-mongo 的所有者说:
MongoDb doesn't have an auto incrementing attribute because it doesn't support it without doing some kind of manual sequence increment on a separate collection or document. We don't currently do this in the adapter but it could be added in the future or if someone wants to submit a PR. We do something similar for sails-disk and sails-redis to get support for autoIncremeting fields.
他提到了我在这个答案中添加的第一种技术: 使用计数器Collection。在同一个问题中,lewins 显示了一个解决方法。