为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Mgo 创建自定义 ID

使用 Mgo 创建自定义 ID

Go
慕桂英3389331 2021-08-23 17:30:03
我目前开始使用 GoLang 和 MongoDB。我正在编写一个小型 Web 应用程序,一个更具体的博客(就像我尝试新语言时编写的第一个 Web 应用程序)。即使一开始我遇到了一些麻烦,MGO 也一切正常。但现在我想分别访问每个博客条目(文章将被称为与我的模型保持一致的条目)。我可以在 url 中使用 ObjectID。但这该死的丑陋。例如:mydomain.com/entries/543fd8940e82533995000002/这不是用户友好的。我在互联网上进行了大量研究以找到合适的解决方案,因为使用任何其他数据库引擎我都可以只使用 id(这样就可以了)。有人可以帮我创建一个自定义(公共)id,当我插入一个新条目时它会自动增加并且我可以在 url 中使用它?这是我现在模型的代码:package modelsimport (    "time"    "labix.org/v2/mgo"    "labix.org/v2/mgo/bson")type (    Entries []Entry    Entry   struct {        ID      bson.ObjectId `bson:"_id,omitempty"`        Title   string        `bson:"title"`        Short   string        `bson:"short"`        Content string        `bson:"content"`        Posted  time.Time     `bson:"posted"`    })// Insert an entry to the databasefunc InsertEntry(database *mgo.Database, entry *Entry) error {    entry.ID = bson.NewObjectId()    return database.C("entries").Insert(entry)}// Find an entry by idfunc GetEntryByID(database *mgo.Database, id string) (entry Entry, err error) {    bid := bson.ObjectIdHex(id)    err = database.C("entries").FindId(bid).One(&entry)    return}// Retrieves all the entriesfunc AllEntries(database *mgo.Database) (entries Entries, err error) {    err = database.C("entries").Find(nil).All(&entries)    return}// Retrieve all the entries sorted by date.func AllEntriesByDate(database *mgo.Database) (entries Entries, err error) {    err = database.C("entries").Find(nil).Sort("-posted").All(&entries)    return}// Counts all the entries.func CountAllEntries(database *mgo.Database) (count int, err error) {    count, err = database.C("entries").Find(nil).Count()    return}
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 235 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信