mongodb - 如何修复 : Golang "append" method pushing same elements to slice

标签 mongodb go

我正在尝试将数据从 DB ( Mongo ) 映射到 slice in go ,如果我返回简单的 []string 一切正常,但如果我将类型更改为 [ ]*models.Organization 代码返回相同元素的 slice 。

func (os *OrganizationService) GetAll() ([]*models.Organization, error) {
    var organizations []*models.Organization
    results := os.MongoClient.Collection("organizations").Find(bson.M{})
    organization := &models.Organization{}
    for results.Next(organization) {
        fmt.Println(organization)
        organizations = append(organizations, organization)
    }
    return organizations, nil
}


我期望输出 [{ Name: "someOrg", ID: "someId"},{ Name: "someOrg2", ID: "someID }, ... ] ,但实际输出是[{ 名称:“someOrg”,ID:“someId”},{名称:“someOrg”,ID:“someId”},...]

我正在使用 bongo 包。

最佳答案

应用程序在循环的每次迭代中附加相同的 organization 值。通过在循环内创建一个新值来修复。

func (os *OrganizationService) GetAll() ([]*models.Organization, error) {
    var organizations []*models.Organization
    results := os.MongoClient.Collection("organizations").Find(bson.M{})
    organization := &models.Organization{}
    for results.Next(organization) {
        fmt.Println(organization)
        organizations = append(organizations, organization)
        organization = &models.Organization{} // new value for next iteration
    }
    return organizations, nil
}

关于mongodb - 如何修复 : Golang "append" method pushing same elements to slice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56739720/

相关文章:

node.js - Typescript 在 Mongoose pre hook 中抛出编译错误(预期有 1 个参数,但得到了 0)

javascript - SQL 到 Mongo 事务架构

winapi - Golang : using Windows 10 API/UWP/System. Windows 运行时?

go - 为什么我的 Go channel 多次返回相同的元素

go - 如何创建一个包罗万象的 Go 环境以满足提出的要求 : "application must compile on shared server"

带有 go-swagger 响应头的 GoLang

node.js - 如何在 node.js 中设计持久化服务

java - mongoDB中_id如何聚合由两个元素组成(在Java中)?

c# - 从 MongoDB 'documents' 获取所有 'collection'

xml - 使用 encoding/xml.Encoder 如何将 xml header 放在自己的行上?