Ошибка аутентификации Mongoose: команда find требует аутентификации.Но я сделал - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь найти документ, который, как я знаю, существует, потому что я вижу его в консоли администратора благодаря mongo-express ... однако, когда я использую Model.findOne(, это вызывает рвоту в приведенном ниже сообщении об ошибке.Что я делаю неправильно?(имя хоста 'mongo' - это мой докер-контейнер, и он отлично подключается, я вижу его в журналах)

Это мой код:

// This all works because the following events show success, and no error.
// So I know it's authing correctly on initial connection
-dbConnect.js-
"user strict"

import mongoose from "mongoose"

const connection = mongoose.createConnection( 
"mongodb://mongo:27017/dbName?authSource=admin", {
              useNewUrlParser: true,
              user: process.env.user,
              pass: process.env.pass,
              keepAlive: true,
            })
connection.on( "connected", () => {
  console.log( "MONGOOSE: connected" )  
})

connection.on( "close", () => {
  console.log( "MONGOOSE: connection close" )  
})

connection.on( "error", error => {
  console.log( "MONGOOSE: connection error", error )  
})

export default connection

-

-models/auth.js-
"use strict"

import mongoose from "mongoose"
import connection from "../dbConnect"

const xSchema = new mongoose.Schema(
  {
    id    : String,
    user  : String,
    pass  : String
  },
  { collection: "x" }
)
export const X = connection.model( "X", xSchema )

-

-controllers/auth.js-
import { X } from "../models/auth"
//Promise wrapper
X.findOne( { id: incommingId }, ( error, x ) => {
  //handler
})

И я получаю эту ошибку

MongoError: command find requires authentication
    at Connection.<anonymous> (/usr/src/app/node_modules/mongodb-core/lib/connection/pool.js:443:61)
    at Connection.emit (events.js:189:13)
    at Connection.EventEmitter.emit (domain.js:441:20)
    at processMessage (/usr/src/app/node_modules/mongodb-core/lib/connection/connection.js:364:10)
    at Socket.<anonymous> (/usr/src/app/node_modules/mongodb-core/lib/connection/connection.js:533:15)
    at Socket.emit (events.js:189:13)
    at Socket.EventEmitter.emit (domain.js:441:20)
    at addChunk (_stream_readable.js:284:12)
    at readableAddChunk (_stream_readable.js:265:11)
    at Socket.Readable.push (_stream_readable.js:220:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)

1 Ответ

0 голосов
/ 13 апреля 2019

Ответ был простым и глупым.Все выше правильно ... оставьте переменные окружения неопределенными.

Очевидно, что Монго позволяет вам подключаться без авторизации, вы просто ничего не можете сделать.Правильно заполняя эти env-переменные, все отлично двигалось.

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