gpt4 book ai didi

node.js - 使用 MongoDB Atlas 时,mongo-go-driver 因服务器选择超时而失败

转载 作者:行者123 更新时间:2023-12-01 19:51:58 25 4
gpt4 key购买 nike

Go 版本:1.12.5

我有这段使用 node.js mongo 驱动程序的代码

const MongoClient = require('mongodb').MongoClient;
const uri = process.env.MONGO_HOST + "dbname?retryWrites=true";
const client = new MongoClient(uri, {
useNewUrlParser: true
});

client.connect(async (err) => {
if (err) {
throw err
}
const collection = client.db("dbname").collection("collectionName");
const cursor = collection.find()
await cursor.forEach(console.log)
// perform actions on the collection object
client.close();
});

效果很好。

使用 mongo-go-driver,我可以:

client, err := mongo.NewClient(options.Client().ApplyURI(os.Getenv("MONGO_HOST") + "dbname?retryWrites=true")
if err != nil {
panic(err)
}
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
err = client.Connect(ctx)
if err != nil {
panic(err)
}
database := client.Database("dbname")
collection := database.Collection("collectionName")

res, err := collection.Find(context.Background(), bson.M{}, &options.FindOptions{
Sort: bson.M{
"priority": -1,
},
})
if err != nil {
panic(err)
}
results := make([]structs.ResponseType, 0)
err = res.All(context.Background(), &results)
if err != nil {
panic(err)
}

但这会引起 panic :

panic: server selection error: server selection timeout
current topology: Type: ReplicaSetNoPrimary

我没有在容器/docker 中运行它。

最佳答案

我遇到了同样的问题,已经解决了。如果您有同样的问题,也许我的解决方案会对您有所帮助。尝试在您的 mongo 连接 url 之后添加参数 connect=direct

关于node.js - 使用 MongoDB Atlas 时,mongo-go-driver 因服务器选择超时而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56111999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com