第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在調(diào)用 Execute 之前,插入操作必須具有部署集

在調(diào)用 Execute 之前,插入操作必須具有部署集

Go
慕神8447489 2023-08-07 19:06:30
我有一個(gè)正在運(yùn)行 MongoDB 的 AWS 實(shí)例。我正在嘗試執(zhí)行一個(gè)小型數(shù)據(jù)庫(kù)操作,當(dāng)下面包含的文件寫入單個(gè) go 文件中時(shí),該操作似乎可以工作。當(dāng)我嘗試拆分它時(shí),出現(xiàn)以下錯(cuò)誤在調(diào)用 Execute 之前,插入操作必須具有部署集分割后的文件如下連接.gopackage dbimport (    "context"    "fmt"    "log"    "go.mongodb.org/mongo-driver/mongo"    "go.mongodb.org/mongo-driver/mongo/options")var Client1 mongo.Clientfunc Connect() {    // Set client options    clientOptions := options.Client().ApplyURI("remote_url")    // Connect to MongoDB    Client1, err := mongo.Connect(context.TODO(), clientOptions)    if err != nil {        log.Fatal(err)    }    // Check the connection    err = Client1.Ping(context.TODO(), nil)    if err != nil {        log.Fatal(err)    }    fmt.Println("Connected to MongoDB!")}func main() {    fmt.Println("Connection to MongoDB done.")}主程序package mainimport (    "context"    "fmt"    "log"    "db"    "go.mongodb.org/mongo-driver/bson")// You will be using this Trainer type later in the programtype Trainer struct {    Name string    Age  int    City string}func main() {    db.Connect()    collection := db.Client1.Database("test2").Collection("trainers")    _ = collection    fmt.Println("Created collection", _)    ash := Trainer{"Ash", 10, "Pallet Town"}    // misty := Trainer{"Misty", 10, "Cerulean City"}    // brock := Trainer{"Brock", 15, "Pewter City"}    insertResult, err := collection.InsertOne(context.TODO(), ash)    if err != nil {        log.Fatal(err)    }    fmt.Println("Inserted a single document: ", insertResult)    err = db.Client1.Disconnect(context.TODO())    if err != nil {        log.Fatal(err)    }    fmt.Println("Connection to MongoDB closed.")}它們被放置在以下結(jié)構(gòu)中/src -> main.go/src -> /db/connect.go
查看完整描述

2 回答

?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊

我相信您的問(wèn)題是由變量陰影wiki)引起的,并且您正在初始化局部變量而不是全局mongo.Client對(duì)象,因此會(huì)拋出您收到的錯(cuò)誤。

它發(fā)生在您的connect.go文件中,您在其中定義了兩個(gè)Client1具有相同名稱的不同變量:

全球范圍內(nèi)的一員

另一個(gè)在Connect()調(diào)用時(shí)被聲明+初始化mongo.Connect()


var Client1 mongo.Client // Client1 at global scope


func Connect() {

    // Set client options

    clientOptions := options.Client().ApplyURI("remote_url")


    // Connect to MongoDB

    Client1, err := mongo.Connect(context.TODO(), clientOptions) // Client1 at local scope within Connect()

這會(huì)導(dǎo)致全局范圍內(nèi)的值永遠(yuǎn)不會(huì)被初始化,因此 main.go 在嘗試使用它時(shí)會(huì)崩潰,因?yàn)樗鼮榱恪?/p>


有多種方法可以解決此問(wèn)題,例如在本地范圍內(nèi)使用不同的變量名稱并將客戶端分配給全局變量:


    var Client1 mongo.Client


    func Connect() {

        // Set client options

        clientOptions := options.Client().ApplyURI("remote_url")


        // Connect to MongoDB

        Client1Local, err := mongo.Connect(context.TODO(), clientOptions)

        Client1 = *Client1Local

或者避免聲明局部變量并直接在全局范圍內(nèi)初始化該變量:


    var Client1 *mongo.Client // Note that now Client1 is of *mongo.Client type


    func Connect() {

        // Set client options

        clientOptions := options.Client().ApplyURI("remote_url")


        // Connect to MongoDB

        var err error

        Client1, err = mongo.Connect(context.TODO(), clientOptions) // Now it's an assignment, not a declaration+assignment anymore

有關(guān) Golang 變量陰影討論的更多信息,請(qǐng)參閱Issue#377 提案


查看完整回答
反對(duì) 回復(fù) 2023-08-07
?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊

嘗試包含類似的內(nèi)容,因?yàn)槟÷粤?db 目錄,這可能是問(wèn)題所在


import "db/db"

connect.go 中還有 main() ,一個(gè)項(xiàng)目應(yīng)該只有一個(gè)主包和 main() 函數(shù)。


---------------- Try what is discussed below exactly ------------

好的,這是我的測(cè)試設(shè)置,其代碼目錄樹與您的類似:


[user@devsetup src]$ tree test

        test

        ├── dbtest

        │   └── db

        │       └── connect.go

        ├── main // This is executable file

        └── main.go


    2 directories, 3 files

在 connect.go 中,我沒(méi)有更改任何內(nèi)容,只是刪除了上面提到的 main() 。確保僅使用導(dǎo)出的函數(shù)和變量,導(dǎo)出的函數(shù)/變量以大寫字母開頭。在 main.go 中,代碼如下所示。* 進(jìn)入dbtest/db目錄并運(yùn)行g(shù)o install命令。然后進(jìn)入項(xiàng)目目錄,即test本例中的此處,然后運(yùn)行g(shù)o build main.go or go build .


package main


import (

        "context"

        "fmt"

        "log"


        "test/dbtest/db"


        // "go.mongodb.org/mongo-driver/bson"

)


// You will be using this Trainer type later in the program

type Trainer struct {

        Name string

        Age  int

        City string

}


func main() {


        db.Connect()

        collection := db.Client1.Database("test2").Collection("trainers")

        _ = collection


        // fmt.Println("Created collection", _)


        ash := Trainer{"Ash", 10, "Pallet Town"}

        // misty := Trainer{"Misty", 10, "Cerulean City"}

        // brock := Trainer{"Brock", 15, "Pewter City"}


        insertResult, err := collection.InsertOne(context.TODO(), ash)

        if err != nil {

                log.Fatal(err)

        }


        fmt.Println("Inserted a single document: ", insertResult)


        err = db.Client1.Disconnect(context.TODO())


        if err != nil {

                log.Fatal(err)

        }

        fmt.Println("Connection to MongoDB closed.")

}

這是我的二進(jìn)制輸出,因?yàn)槲覜](méi)有給出任何輸入 url ,它拋出一個(gè)錯(cuò)誤。似乎有效。我在 main.go 中注釋掉了一個(gè)包和一行


[user@devsetup test]$ ./test

20xx/yy/zz aa:bb:cc error parsing uri: scheme must be "mongodb" or "mongodb+srv"


查看完整回答
反對(duì) 回復(fù) 2023-08-07
  • 2 回答
  • 0 關(guān)注
  • 230 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)