Проблема с подключением к коллекциям MongoDB - PullRequest
0 голосов
/ 14 ноября 2018

Я использую Axios и Express.js API для подключения к моей БД mongo. У меня есть запрос .get (), который работает для одной коллекции и не работает для любой другой коллекции. В настоящее время он подключается к базе данных и может получить доступ к одной из коллекций, называемых пользователями. У меня есть другая настройка коллекции в той же базе данных, называемая задачами, у меня и пользователи, и задачи настроены одинаково и используются одинаково в коде. Пользователи могут подключиться к БД (получить, опубликовать), а задачи не могут подключиться к коллекции при вызове функций get или post. При просмотре запроса API .get () в браузере он просто зависает и никогда ничего не возвращает или не завершает запрос.

любая помощь будет принята с благодарностью!

Проект находится на GitHub под SCRUM-150.

API connection
MONGO_URI=mongodb://localhost:27017/mydb

Working

    methods: {
          //load all users from DB, we call this often to make sure the      data is up to date
           load() {
             http
               .get("users")
               .then(response => {
                 this.users = response.data.users;
               })
               .catch(e => {
                 this.errors.push(e);
               });
           },

           //opens delete dialog
            setupDelete(user) {
             this.userToDelete = user;
            this.deleteDialog = true;
      },

      //opens edit dialog
      setupEdit(user) {
        Object.keys(user).forEach(key => {
          this.userToEdit[key] = user[key];
        });
        this.editName = user.name;
        this.editDialog = true;
      },

      //build the alert info for us
      //Will emit an alert, followed by a boolean for success, the type of call made, and the name of the
      //resource we are working on
      alert(success, callName, resource) {
        console.log('Page Alerting')
        this.$emit('alert', success, callName, resource)
        this.load()
      }
    },

    //get those users
    mounted() {
      this.load();
    }
  };


Broken
methods: {
      //load all tasks from DB, we call this often to make sure the data is up to date
      load() {
        http
          .get("tasks")
          .then(response => {
            this.tasks = response.data.tasks
          })
          .catch(e => {
            this.errors.push(e);
          });
      },

      //opens delete dialog
      setupDelete(tasks) {
        this.taskToDelete = tasks;
        this.deleteDialog = true;
      },

      //opens edit dialog
      setupEdit(tasks) {
        Object.keys(tasks).forEach(key => {
          this.taskToEdit[key] = tasks[key];
        });
        this.editName = tasks.name;
        this.editDialog = true;
      },

      //build the alert info for us
      //Will emit an alert, followed by a boolean for success, the type of call made, and the name of the
      //resource we are working on
      alert(success, callName, resource) {
        console.log('Page Alerting')
        this.$emit('alert', success, callName, resource)
        this.load()
      }
    },

    //get those tasks
    mounted() {
      this.load();
    }
  };

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Вот мое решение: в вашем app.js есть:

let mongoose = require('mongoose');

mongoose.connect('Your/Database/Url', {
    keepAlive     : true,
    reconnectTries: 2,
    useMongoClient: true
});

На вашем маршруте есть:

let mongoose = require('mongoose');
let db = mongoose.connection;
fetchAndSendDatabase('yourCollectionName', db);

function fetchAndSendDatabase(dbName, db) {
    db.collection(dbName).find({}).toArray(function(err, result) {
        if( err ) {
            console.log("couldn't get database items. " + err);
        }
        else {
            console.log('Database received successfully');
        }
    });
}
0 голосов
/ 14 ноября 2018

Вы устанавливаете какие-либо элементы управления доступом в коде?

Также см. Документацию mongoDB здесь: https://docs.mongodb.com/manual/core/collection-level-access-control/

...