Монго-атлас соединение: ReferenceError: клиент не определен - PullRequest
0 голосов
/ 20 апреля 2019

при попытке подключиться к атласу Монго я получаю сообщение об ошибке "ReferenceError: клиент не определен".

Ошибка консоли:

const db = client.db( 'coneccao-Teste');ReferenceError: клиент не определен

См. Ниже мой код NodeJ с конфигурацией сервера Express и соединением mongo-atlas.

У вас есть предложение?

спасибо!

const express = require('express');
const app = express();
const router = express.Router();
const MongoClient = require('mongodb').MongoClient;
const ObjectId = require('mongodb').ObjectId;
const port = 3000;
const mongo_uri = 'mongodb+srv://rbk:******-@cluster0-5zvdy.mongodb.net/coneccao-teste?retryWrites=true';
const db = client.db('coneccao-teste');
const collection = db.collection('inicio');


MongoClient.connect(mongo_uri, { useNewUrlParser: true })
.then(client => {
  const db = client.db('coneccao-teste');
  const collection = db.collection('inicio');
  app.listen(port, () => console.info(`REST API running on port ${port}`));
}).catch(error => console.error(error));

// add this line before app.listen()
app.locals.collection = collection;

app.get('/', (req, res) => {
  const collection = req.app.locals.collection;
  collection.find({}).toArray().then(response => res.status(200).json(response)).catch(error => console.error(error));
});

app.get('/:id', (req, res) => {
  const collection = req.app.locals.collection;
  const id = new ObjectId(req.params.id);
  collection.findOne({ _id: id }).then(response => res.status(200).json(response)).catch(error => console.error(error));
});


app.listen(port);

1 Ответ

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

относительно вашей второй проблемы, коллекция просто не определена.

когда вы объявляете:

app.locals.collection = collection;

Ваше подключение к Монго, вероятно, еще не подключено, что означает, что в этот момент коллекция не определена

вставьте эту декларацию после того, как соединение установлено и перед тем, как вы начнете прослушивать приложение ur:

MongoClient.connect(mongo_uri, { useNewUrlParser: true })
.then(client => {
  const db = client.db('coneccao-teste');
  const collection = db.collection('inicio');
  app.locals.collection = collection;
  app.listen(port, () => console.info(`REST API running on port ${port}`));
}).catch(error => console.error(error));

теперь коллекция гарантированно будет определена так, как вы ожидаете при запуске приложения.

...