- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我的目标是实现这个 code .除了不使用 sql,我想使用 mongoDB。我认为我处理 session 的方式存在问题。
我正在尝试使用 mgo 通过 Rest API 将一些用户数据插入到 MongoDB 中。每当我打开 mongo shell 并运行 show dbs
命令时,都不会显示 poll
DB。我正在使用 Postman 来测试 Rest API。任何想法我在插入过程中可能做错了什么?我尝试先在 mongo shell 中创建集合,然后运行 CreateUser
函数,但我仍然没有看到创建了 poll
DB。
用户
type User struct {
Id bson.ObjectId `json:"id" bson:"_id,omitempty"`
Username string `json:"username"`
Password string `json:"password"`
Email string `json:"email"`
}
UserDAO
type UserDAO struct {
session *mgo.Session
}
创建 session
func GetMongoSession() *mgo.Session {
if mgoSession == nil {
var err error
mgoSession, err = mgo.Dial("localhost")
mgoSession.SetMode(mgo.Monotonic, true)
if err != nil {
log.Fatal("Failed to start the Mongo session.")
}
}
return mgoSession.Clone()
}
我将一个用户结构传递到我使用 Postman 创建的 CreateUser
函数中:
{
"username":"uname",
"password":"pass",
"email":"test@mail.com"
}
然后我只用相同的结构响应并接收此输出:
{
"id": "",
"username": "uname",
"password": "pass",
"email": "test@mail.com"
}
创建用户
func (dao *UserDAO) CreateUser(u *User) (*User, error) {
//return errors.New("Not implemented")
// Get "users" collection
dao.session = GetMongoSession()
c := dao.session.DB("poll").C("user")
defer dao.session.Close()
//u.Id = bson.NewObjectId()
err := c.Insert(u)
if err != nil {
return nil, err
}
return u, nil
}
HTTP 处理函数
func (h *Handler) CreateUserReq(w http.ResponseWriter, r *http.Request) {
// create new user using information from the Request object
var user User
decoder := json.NewDecoder(r.Body)
if err := decoder.Decode(&user); err != nil {
panic(err)
}
defer r.Body.Close()
// Create new User
u, err := h.UserService.CreateUser(&user)
if err != nil {
panic(err)
}
json.NewEncoder(w).Encode(*u)
}
显示数据库的输出
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
最佳答案
因为我没有您的应用程序的完整上下文,所以无法诊断您的代码到底有什么问题。但我想出了一个接近的例子,它按预期工作。
请看下面的代码。
package main
import (
"gopkg.in/mgo.v2"
"log"
"gopkg.in/mgo.v2/bson"
)
type User struct {
Id bson.ObjectId `json:"id" bson:"_id,omitempty"`
Username string `json:"username"`
Password string `json:"password"`
Email string `json:"email"`
}
func GetMongoSession() *mgo.Session {
mgoSession, err := mgo.Dial("localhost")
mgoSession.SetMode(mgo.Monotonic, true)
if err != nil {
log.Fatal("Failed to start the Mongo session.")
}
return mgoSession.Clone()
}
func CreateUser(u *User) (*User, error) {
session := GetMongoSession()
c := session.DB("poll").C("user")
defer session.Close()
err := c.Insert(u)
if err != nil {
return nil, err
}
return u, nil
}
func main() {
var user = User{
Email: "abc@somewhere.come",
Password: "My-secret",
Username: "YouGuess",
}
_, e := CreateUser(&user)
if e != nil {
panic(e)
}
log.Println("Done...")
}
一旦你执行它,你应该会在 MongoDB 中看到一个文档,前提是你使用正确的凭据成功建立了连接。
我可以在我的收藏中看到以下文档:
{
"_id": ObjectId("5a80941de0a0f75123aeb435"),
"username": "YouGuess",
"password": "My-secret",
"email": "abc@somewhere.come"
}
关于mongodb - Mgo 插入命令不创建数据库或插入文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48734250/
我最近开始学习 Go,到目前为止我非常喜欢它。我想了解如何使用 mgo Mongo 驱动程序制作 REST API。 在网站上,共有三个API:mgo、mgo/bson、mgo/txn。它们是什么意思
我有一个 GoLang 代码: c.Find(selectQuery).All(&results) if err == mgo.ErrNotFound { // error handling } se
我有一组动态的成分名称,并为每个用户提供。我想将它与 mongo 文档匹配,其中有一个名为 ingredients 的对象的 array 具有属性 name。我已经编写了一个查询(见下文),它将从 U
我 我很难将 MongoDB 查询转换为 mgo bson。 Mongo 记录模式如下所示。我想查找主题标签为“教育”和“学生”的记录。 db.questions.insert ( {
我正在尝试使用 mgo 库进行批量更新插入。我正在阅读 documentation关于批量更新插入,因为这是我第一次使用 MongoDB,看起来我必须提供成对的文档才能更新。 在我的函数中,我正在执行
我一直在为我的 API 使用 mgo,但我在我的 MongoDB 中看到许多当前连接(同时使用少于 5 个设备进行测试)。通过在我的 Mongo 服务器中执行 db.serverStatus().co
我正在尝试检索以下数据中每个 object_name 的最早创建日期和最后修改日期 { "_id" : ObjectId("5a510666b2e543371cff44ef"), "object_na
我是 Golang 的新手,我正在使用 mgo 框架构建 Golang CRUD 来练习。当我使用 mgo 插入一个元素时,插入了两次而不是一次,我在 MongoDB Compass 社区中检查了它。
我正在从事一个基于 MongoDB 数据结构的项目。我们存储在数据库中的对象如下所示: { "_id" : ObjectId("567a877df1c7720bea7c2f51"), "usernam
我正在尝试使用 golang mgo 执行查询为了有效地从连接中获得不同的值,我知道这可能不是在 Mongo 中使用的最佳范例。 像这样: pipe := []bson.M{ {
我的目标是实现这个 code .除了不使用 sql,我想使用 mongoDB。我认为我处理 session 的方式存在问题。 我正在尝试使用 mgo 通过 Rest API 将一些用户数据插入到 Mo
我正在尝试使用 Go 中的 mgo 库实现以下功能: db.artists.update( {_id: ObjectId("534944125117082b30000001")}, {
我的 Go 应用程序已使用 MGO 连接到 MongoDB(托管在 Compose.io 上),没有任何问题。 今天我决定删除这个数据库并添加一个不同的数据库(再次使用 Compose)。我更新了连接
我有这个模型数据,我用它来将数据保存到数据库中 type Nos struct { UnitCode string `json:"unitCode" bson:"unitCode
我正在用 mgo 编写一个数据库接口(interface)。我的模型中的某些文档引用了其他文档。 type Child struct{ Id bson.ObjectId `js
我有一个查询,它从包含特定文本的集合文档中返回所有名称。在以下示例中,不区分大小写地返回所有包含序列“oh”的名称;不返回文档中的其他字段: find({name:/oh/i}, {name:1, _
我使用以下 go 文件作为我的 http API 和 mgo 之间的层: package store import ( "reflect" "strings" "labix.o
我正在编写一个快速写入 mongodb 的应用程序。 mongodb 和 mgo 处理得太快了。我的问题是,有没有办法让我确定 mongo 跟不上并开始阻塞?但我也不想无谓地阻止。以下是模拟问题的代码
我有以下代码: competitionMatch := bson.M{ "$match": bson.M{"competition" : bson.M{"$in" : []string{"PREMIE
下面我设计了文档结构如下: type MIS_Course struct { ID bson.ObjectId `bson:"_id,omitempty"` Name string
我是一名优秀的程序员,十分优秀!