Подобные массивы ведут себя по-разному - PullRequest
0 голосов
/ 08 мая 2018

Я пишу приложение для mongoose и Express, но перед использованием mongoose я использовал стандартный MongoClient из mongodb. Это вернуло мне массив, который я мог использовать, чтобы визуализировать мой взгляд на веточку. Однако после переключения массив из Mongoose не работает так, как я ожидал, в случае, если я не могу правильно выбрать значения ключа массива, как в этом примере кода.

С мангустом:

router.get('/:page', function (req, res, next) {
    Page.find({'title': req.params.page.toLowerCase()}, function (err, page) {
        if(!Array.length) {
            next(createError(404));
            return;
        }
        res.send(page[0].title);
    });

Ответ: ничего, пусто. По какой-то причине, если я сделаю page[0] или просто page, он вернет мне массив, как и должен.

Без мангуста:

const MongoClient = require('mongodb').MongoClient;
    MongoClient.connect('mongodb://localhost/ezcm', function (err, db) {
        if (err) throw err;
        let dbo = db.db("ezcm");
        let query = {title: req.params.page.toLowerCase()};
        dbo.collection("pages").find(query).toArray(function (err, result) {
            if (!Array.isArray(result) || !result.length) {
                next(createError(404));
                return
            }
            db.close();
        });
    });

(игнорировать лишние биты несвязанного кода) Ответ: что я искал, например, About me, если это было localhost:3000/about.

Похоже, они оба массивы, но разные типы массивов? Как новичок, я не могу отличить и работать с ними. Помоги мне!

Заранее спасибо.

1 Ответ

0 голосов
/ 08 мая 2018

Используйте JSON.parse(array) в результате, mongoose любит обрабатывать свои объекты и массивы иначе, чем стандартный JSON.

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