简体   繁体   English

在 Docker 中连接到 Deno MongoDb 抛出未捕获的 promise(在 wsl2 中)

[英]Connecting to Deno MongoDb in Docker throws uncaught promise (in wsl2)

The project runs in Deno .该项目在Deno中运行。
I'm trying to connect the MongoClient in Deno to a MongoDb container running in Docker.我正在尝试将Deno中的 MongoClient 连接到在 Docker 中运行的 MongoDb 容器。
The docker container is running in wsl2 with the wsl ip 172.18.96.38 and exposing port 27017. docker 容器在 wsl2 中运行,wsl ip 172.18.96.38 并公开端口 27017。

Connecting to it with the following code leads to an error:使用以下代码连接到它会导致错误:

import { MongoClient } from "https://deno.land/x/mongo@v0.23.0/mod.ts";

const uri = 'mongodb://admin:admin@172.18.96.38:27017'
this.mClient = new MongoClient();
await this.mClient.connect(uri);
error: Uncaught (in promise) Error: MongoError: "Connection failed: MongoError: {\"ok\":0,\"errmsg\":\"no such command: 'hello'\",\"code\":59,\"codeName\":\"CommandNotFound\"}"
      throw new MongoError(`Connection failed: ${e.message || e}`);
            ^
    at MongoClient.connect (https://deno.land/x/mongo@v0.23.0/src/client.ts:26:13)
    at async Function.initMongoClient (file:///home/robert/repos/myDenoWebsite/backend/src/utils/mongoClientWrapper.ts:54:9)

According to the errmsg the error is 'no such command: 'hello'.根据 errmsg,错误是“没有这样的命令:‘你好’”。 What does this mean?这是什么意思?

This is my docker-compose.yml for mongo btw:这是我的 docker-compose.yml for mongo btw:

version: '3.8'

services:
  mongodb:
    image: mongo:4.4-bionic
    container_name: my-mongodb
    ports:
      - 27017:27017
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=admin
    volumes:
      - mongodb:/data/db
      - mongoconfig:/data/configdb

volumes:
  mongodb:
  mongoconfig:

I got a same error, so I found an alternative way我遇到了同样的错误,所以我找到了另一种方法

This is my solution这是我的解决方案

import { MongoClient } from "https://deno.land/x/mongo@v0.29.2/mod.ts";

const conn = async () => {
  const client = new MongoClient();
  const srv = `mongodb+srv://admin:admin@172.18.96.38:27017/<Your Database>?authMechanism=SCRAM-SHA-1&retryWrites=true&w=majority`
  await client.connect(srv);
  return client;
}

export const getData = async () => {
  const conn = await conn()
  <Your Logic Here>
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM