Как решить "команда find требует аутентификации", используя Golang и MongoDriver - PullRequest
0 голосов
/ 19 февраля 2020

Мне нужна помощь, чтобы исправить ошибку. Я использую службы IBM mon go.

go версия go1.13.6 darwin / amd64

mon go версия драйвера 1.2.1 Соединение работает, я могу прочитать и пишет, но иногда возвращает: для команды find требуется аутентификация и для вставки команды требуется аутентификация

MONGO_DB_URI=mongodb://username:password:port,host/dbname?authSource=admin&replicaSet=replset&connect=direct&alias=default

Соединение:

 func ConnectDatabase() *mongo.Client {
    clientOptions := options.Client().ApplyURI(os.Getenv("MONGO_DB_URI"))

    ctx, _ := context.WithTimeout(context.Background(), 30*time.Second)
    var err error
    client, err = mongo.Connect(ctx, clientOptions)

    if err != nil {
        log.Fatal(err)
    }

    ctx, _ = context.WithTimeout(context.Background(), 10*time.Second)
    err = client.Ping(ctx, nil)

    if err != nil {
        log.Fatal(err)
        return nil
    }

    fmt.Println("Connected to MongoDB!")
    return client
}

Чтение:

func FindAll(collectionName string, query bson.M) (*mongo.Cursor, error) {
    collection := client.Database("dbname").Collection(collectionName)
    singleResult, err := collection.Find(context.TODO(), query)
    return singleResult, err
}

Чтение:

    ctx, _ := context.WithTimeout(context.Background(), 20*time.Second)
    cur, err := mongo.GetCollection("collection_name").Find(ctx, createQuery())
    if err != nil {
        log.Println(err.Error())
    }

Я использую ту же базу данных и те же конфигурации в нашем другом Python проекте. Без исключений.

1 Ответ

0 голосов
/ 19 февраля 2020

Существует разница между подключением к БД и выполнением операций с БД. Пн go позволяет вам подключаться без аутентификации, потому что вы должны иметь возможность подключиться, чтобы иметь возможность аутентификации.

var cred options.Credential

cred.AuthSource = YourAuthSource
cred.Username = YourUserName
cred.Password = YourPassword

// set client options
clientOptions := options.Client().ApplyURI(os.Getenv("MONGO_DB_URI")).SetAuth(cred)

//... the rest of your code

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...