Почему метод find () не показывает последние данные из базы данных mongoDb в Express. Js - PullRequest
1 голос
/ 09 мая 2020

Когда вызывается метод app.post('/form-submit', funtion(req, res)), я ожидаю, что он сначала сохранит данные, используя save(), что было нормально, но затем я вызываю метод find(), который показывает все данные из базы данных mongoDB, кроме текущих данных который недавно был добавлен методом save().

Я хочу, чтобы этот метод find() также отображал текущие данные . Но метод show() показывает только предыдущие данные, а не последние. И мне кажется, что это асинхронная проблема

//For Put request in index.js
app.post('/form-submit', function(req, res) {

    //To add the current data into database

    connect.then((db) => {
        var newTask = taskSchema({
            Task: req.body.Task
        });
        newTask.save();

    });


    //To show the data into page 'showTask.ejs
    taskSchema.find({}, function(err, val) {
        console.log(res.length);
        res.render('showTask.ejs', { todoTask: val });
    });

});

1 Ответ

2 голосов
/ 09 мая 2020

save asyn c

он может либо вернуть обещание, либо принять обратный вызов (err) => {}

, чтобы вы получали информацию в то время, когда это не удалось еще сохранить

app.post('/form-submit', function(req, res) {

    //To add the current data into database

    connect.then((db) => {
        var newTask = taskSchema({
            Task: req.body.Task
        });
        return newTask.save();
    }).then(() => {
        //To show the data into page 'showTask.ejs
        taskSchema.find({}, function(err, val) {
            console.log(res.length);
            res.render('showTask.ejs', { todoTask: val });
        });
    });

});

или:

app.post('/form-submit', async function(req, res) {

    //To add the current data into database

    const db = await connect;
    var newTask = taskSchema({
        Task: req.body.Task
    });
    await newTask.save();

    //To show the data into page 'showTask.ejs
    taskSchema.find({}, function(err, val) {
        console.log(res.length);
        res.render('showTask.ejs', { todoTask: val });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...