Монго-запрос, возвращающий пустой массив - PullRequest
0 голосов
/ 28 октября 2019

Я абсолютный новичок в этом и использую учебное пособие для изучения основ стека MEAN. Я пытаюсь вернуть документы в моей базе данных на веб-страницу, но вместо этого получаю пустой массив.

Я создал кластер в Mongodb Atlas под названием mytasklist. Здесь я создал базу данных под названием mytasklistdb. Внутри этого у меня есть таблица (объект) с именем mytasklistdb.mytasklisttutorial. Мое понимание этого ограничено, и, возможно, я где-то здесь делаю огромную ошибку. У меня есть опыт работы с SQL, но не с Mongo, и поэтому для меня новость о кластерах и коллекциях.

В любом случае мой код выглядит следующим образом. Я взял строку для подключения к базе данных на вкладке подключения Mongo.

var express = require('express');
var router = express.Router();
var mongojs = require('mongojs');
var db = mongojs('mongodb+srv://myusername:mypassword@mytasklist-qx0ka.mongodb.net/test?retryWrites=true&w=majority', ['mytasklisttutorial']);

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

module.exports = router;

Мои объекты базы данных выглядят так:

_id:5db5f1f31c9d440000c3e7fe
title:"Walk the dog"    -   this is a string
isDone:false      -     this is boolean

Я просто получаю пустой массив, но вУчебник парень получает эти «документы». Что я делаю не так?

РЕДАКТИРОВАТЬ: я понял, что часть «задач» в учебном примере была связана с базой данных под названием «задачи». Мой называется «mytasklistdb». Поэтому я изменил это. Я также добавил параметр с именем моей коллекции в строку, переданную mongojs.

Я изменил свой код выше, чтобы отразить это

Ответы [ 2 ]

1 голос
/ 28 октября 2019

Решением было заменить «task» и «test» на имя моей базы данных. Следующим образом:

var express = require('express');
var router = express.Router();
var mongojs = require('mongojs');
var db = mongojs('mongodb+srv://James:Noentry1@mytasklist-qx0ka.mongodb.net/mytasklistdb?retryWrites=true&w=majority', ['mytasklisttutorial']);

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

module.exports = router;
1 голос
/ 28 октября 2019

Я предполагаю, что вы не передаете свой запрос, просто ответный вызов в методе find (), возможно, вам нужно сделать что-то вроде этого:

db.tasks.find({},function(err, tasks){
    if(err){
        res.send(err);
    }
    res.json(tasks);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...