使用MongoDB Atlas时,mongo-go-driver失败,服务器选择超时

时间:2019-05-13 12:06:17

标签: node.js mongodb go mongo-go

开始版本:1.12.5

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

<?php
    for ($i = 0; $filters[$i]; $i++)
    {
        if (strpos($filters[$i], '.png'))
        {
            ?>
            <!-- get php variable for javascript : -->
            <div id="filter-target" style="display: none;">
                <?php
                    echo htmlspecialchars($i);
                ?>
            </div>
            <!-- ... -->

            <?php
            echo '<div tabindex="-1" class="filter_box" onclick="getFilterName(\''.$filters[$i].'\')">';
                echo '<img class="filter" src="pictures/filters/'.$filters[$i].'"/>';
            echo '</div>';
        }
    }
?>

哪个工作正常。

我使用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)
}

我不在容器/泊坞窗中运行它。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,并且已经解决了。如果您有相同的问题,也许我的解决方案会为您提供帮助。 尝试在mongo连接网址之后添加参数connect=direct