Дождитесь разрешения обещания и затем введите MySQL - PullRequest
0 голосов
/ 14 марта 2020

У меня есть код в Nodejs, который будет сначала вставлять сообщение, а затем мета-сообщение (другая таблица).

Я хочу, чтобы сообщение было вставлено первым, а затем выполнить поиск последнего идентификатора и вставить мета-сообщение (другую таблицу).

Но это не работает, кажется, что оно не ждет, что первая функция вставит пост.

Вот мой код:

function insertarpost() { 
    return new Promise(function(resolve, reject) { 
        var sql = "INSERT INTO `wp_posts` ( `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`,`post_excerpt`, `post_status`,`comment_status`, `ping_status`,`post_password`, `post_name`,`to_ping`,`pinged`, `post_modified`, `post_modified_gmt`,`post_content_filtered`,`post_parent`, `guid`,`menu_order`, `post_type`, `post_mime_type`,`comment_count`) VALUES (1, '"+fhoy+"', '"+fhoy+"', ' ', '"+title+"','', 'publish', 'open', 'closed','','"+slug+"','','', '"+fhoy+"', '"+fhoy+"','', '0','','0', 'movies','' ,0);"; 
        con.query(sql, function (err, result) { 
            if (err) throw err; 
            resolve(result); 
            console.log("1 registro insertado"); 
        }); 
    }); 
}

insertarpost().then(obtenerultimopostid())

function obtenerultimopostid() {
    con.query("SELECT ID FROM wp_posts ORDER BY ID DESC LIMIT 0,1;", function (err, result, fields) {
        var sql = "INSERT INTO wp_postmeta (post_id, meta_key, meta_value) VALUES ("+result[0].ID+",'runtime', '"+runtime+"'),("+result[0].ID+",'original_title','"+titleoriginal+"'),("+result[0].ID+",'Rated','"+cpgrated+"'),("+result[0].ID+",'Country', '"+country+"'),("+result[0].ID+",'date', '"+datemovie+"'),("+result[0].ID+",'imdbRating', '"+repimdb+"'),("+result[0].ID+",'vote_average', '"+reptmdb+"'),("+result[0].ID+",'imdbVotes', '"+quantimdb+"'),("+result[0].ID+",'vote_count', '"+quanttmdb+"'),("+result[0].ID+",'tagline', '"+tagline+"'),("+result[0].ID+",'dt_poster', '"+poster+"');"; 
        con.query(sql, function (err, result) { 
            if (err) throw err; 
            console.log("1 registro wpmeta insertado");
        });
    });
}

1 Ответ

4 голосов
/ 14 марта 2020

Вы выполняете вторую функцию немедленно, вместо передачи функции в метод then:

Изменение:

insertarpost().then(obtenerultimopostid())

to:

insertarpost().then(obtenerultimopostid)

Не ваш вопрос, но ваш код уязвим для SQL инъекции .

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