Код MongoDB не хочет говорить с MongoDB - PullRequest
0 голосов
/ 04 февраля 2020

Я какое-то время возился с некоторым кодом, просто пытаясь выучить MEAN Stack, но я постоянно зацикливаюсь на двух разных компьютерах. Я использую учебник Youtube и использую обычный NodeJS, Express, MongoDB, в основном все, что в аббревиатуре MEAN. Я подлетаю к точке, где я готов установить соединение с базой данных (поэтому я выполняю NPM init, выполняю установку для express, Mongodb (я думаю, Mon goJS также был установлен) и сохранен также) и e js, затем я go, чтобы запустить приложение только для того, чтобы получить набор скобок [] на экране и ничего больше. Есть содержимое в базе данных. Я использую обе версии, установленные локально Mon go и MongoAtlas онлайн, и оба дают одинаковые результаты. Единственная известная мне проблема заключается в том, что, если я пытаюсь проверить версию Mon go или запустить ее в командной строке, она действует как будто его там нет, но он работает как служба. У меня есть две версии этого, у обеих есть одна и та же проблема. Я включил приведенный ниже код. Следует отметить, что только один компьютер с MongoCompass фактически будет иметь доступ к MongoAtlas вообще. предложить проблему брандмауэра, которую я не могу контролировать на одном из моих компьютеров, но мое приложение должно иметь доступ к локальным базам данных. * 100 1 *

var express = require('express');
var router = express.Router();
//import mongojs from 'mongojs';
var mongojs = require('mongojs');
var db = mongojs('mongodb://127.0.0.1:27017/?snappy=disabled&gssapiServiceName=mongodb', ['test']);

router.get('/tasks', function(req, res, next){
    db.tasks.find(function(err, tasks){
        if(err){
            res.send(err);
        }
        res.json(tasks);
    });
});
module.exports = router;

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Прежде всего, проверьте, установлен ли сервер mongod на вашем компьютере.

, если вы используете ubuntu, нажмите следующую команду: -

sudo service mongod status

Если не работает, то выполните следующие шаги и запустите fre sh: -

1) Установите сервер mongodb

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

sudo apt-get update

sudo apt-get install -y mongodb-org

2) Теперь запустите службу MongoDB с помощью команды: -

sudo service mongod start

3) Я никогда не использую mon gojs для подключения к mongob, попробуйте модуль mongodb

npm i mongodb 

4) Установите соединение с DB следующим образом: -

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');

// Connection URL
const url = 'mongodb://localhost:27017';

// Database Name
const dbName = 'myproject';

// Use connect method to connect to the server
MongoClient.connect(url, function(err, client) {
  assert.equal(null, err);
  console.log("Connected successfully to server");

  const db = client.db(dbName);
   findDocuments(db, function() {
  client.close();
});
    });



const findDocuments = function(db, callback) {
  // Get the documents collection
  const collection = db.collection('documents');
  // Find some documents
  collection.find({}).toArray(function(err, docs) {
    assert.equal(err, null);
    console.log("Found the following records");
    console.log(docs)
    callback(docs);
  });
}

Надеюсь, что это поможет вам понять соединение с MongoDB.

ИЛИ вы также можете сделать то же самое со знаменитым ORM с богатой функциональностью, то есть mon goose

0 голосов
/ 04 февраля 2020

Единственная причина, по которой вы получаете только [], это то, что у вас нет данных в этой коллекции. Итак, вам нужно добавить новые данные в эту коллекцию, и вашему результату не понравится [], но есть ваши данные.

Чтобы добавить свои данные, вы можете попытаться создать маршрут задач create .

Вы можете использовать этот код ниже, чтобы создать маршрут задачи create.

router.post('/tasks', function(req, res, next){
  db.tasks.save(req.body, function(err, tasks){
      if(err)  return res.status(400).send(err);
      res.status(201).send(tasks);
  });
});

Убедитесь, что ваш req.body не является неопределенным. Если это undefined, пожалуйста, добавьте body-parser, как показано ниже:

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

Теперь вы можете попытаться добавить данные с помощью почтальона и вызвать ваши маршруты tasks с помощью метода post и не не забудьте добавить свои данные в body.

После того, как вы создали некоторые данные, теперь вы можете попробовать снова вызвать ваши маршруты get tasks, и тогда вы увидите ваш результат tasks.

Надеюсь, это поможет вам.

...