Сбой Promise.all () при добавлении в мангуста дополнительной модели.save () - PullRequest
0 голосов
/ 02 декабря 2018

Я получаю ошибку Mocha в моем Promise.all при запуске сохранения модели 4 mongoose, но это нормально при запуске сохранения только модели 3 mongoose.Вот пример кода под описанием () => {}.

// Blog and Tag are mongoose models.
beforeEach((done) => {
    myBlog = new Blog({ title: '1st Post' });
    myBlog2 = new Blog({ title: '2nd Post' });
    tag1 = new Tag({ tag: 'Tag 1' });
    tag2 = new Tag({ tag: 'Tag 2' });

    myBlog.tag.push(tag1, tag2);        
    myBlog2.tag.push(tag1);
    tag1.blog.push(myBlog, myBlog2);
    tag2.blog.push(myBlog);

    Promise.all([myBlog.save(), tag1.save(), tag2.save()])
        .then(() => done());
});

it('find myBlog', (done) => {       
    Blog.findOne({ title: '1st Post'})
        .then((blog) => {
            assert(blog.title === '1st Post');
            done();
        });
});

Вышеупомянутый код работает хорошо, однако, когда я заменяю исходный код Promise.all на include myBlog2.save (), я получаю ошибку.

Promise.all([myBlog.save(), myBlog2.save(), tag1.save(), tag2.save()])
        .then(() => done());

"before each" hook for "find myBlog":
 Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

Почему эточто добавление дополнительной model.save () в Promise.all () вызывает ошибку?

Я проверил mongodb, и коллекции успешно сохранены.Однако я не верю, что код it ('find myBlog') работал вообще.

1 Ответ

0 голосов
/ 02 декабря 2018

Если БД находится далеко от вас, или она работает на очень медленной машине,

вы можете действительно превысить тайм-аут 2 секунды.

Вы можете управлять им через .timeout (мс), например:

it('mytest', done => {}).timeout(5000) или beforeEach().timeout()

сделает тайм-аут до 5 секунд.

Подробнее об этом здесь

Надеюсь, это поможет, Удачи!

...