我正在编写代码来获取一些JSON数据并将其传递给具有给定数据的新视图。 该视图称为/ newbook2,我想通过API调用的JSON文件将书名,作者姓名等信息传递给视图。
var s_book_name;
var s_author_name;
var s_isbn13_id;
var s_publisher_name;
var s_category_id;
var error="";
router.post('/searchbook', function(req, res){
var isbn=req.body.isbn;
var url="http://isbndb.com/api/v2/json/63JEP95R/book/"+isbn;
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
if(body.data[0].title!=null)
s_book_name=body.data[0].title;
if(body.data[0].author_data[0]!=null)
s_author_name=body.data[0].author_data[0].name;
if(body.data[0].isbn13!=null)
s_isbn13_id=body.data[0].isbn13;
if(body.data[0].publisher_name!=null)
s_publisher_name=body.data[0].publisher_name;
if(body.data[0].subject_ids[0]!=null)
s_category_id=body.data[0].subject_ids[0];
}
else error="Book not found. Please enter the information manually."
});
res.redirect('/newbook2');
});
但是,我的视图中尚未加载信息。这似乎是异步调用的常见问题。但是,我是nodejs的新手,并希望得到有关如何修复它的任何帮助。
router.get('/newbook2', function(req, res){
res.render('newbook2', {title: 'Add New Book',s_book: s_book_name, s_author: s_author_name, s_isbn13: s_isbn13_id ,s_publisher: s_publisher_name , s_category: s_category_id});
});
答案 0 :(得分:0)
你需要使用promises。以下是一些示例代码供您参考POST电话。
router.post('/newBook', function(req, res, next) {
console.log('Please add your here to get the data from server');
Obj.then(function() {
res.send('You got the success response from the server');
});
});
res.send('Your Book has been successfully added.');
只有在您从服务器获得成功响应后才会执行。
请详细了解承诺的概念。