在 MVC 结构中使用 Express + Request 节点模块的异步嵌套回调
Async Nested Callbacks using Express + Request node module in a MVC structure
我正在为使用 Node Request 将一些数据从模型文件传回控制器的最后一步而苦苦挣扎。
我已经成功地从我的模型文件设置了回调,它使用请求从外部源加载 JSON。
我的控制器可以访问它,但我认为在最后一步我仍然需要某种嵌套的第二个回调,因为我希望变量 pageJSON 包含 JSON 对象并且不能'不太清楚如何。
我觉得我遇到了一些困难,如果能对这个问题有新的看法,我们将不胜感激!感觉我现在错过了一些非常简单的东西(我希望!)
我的模型文件:
module.exports = function (config, callback) {
const request = require('request');
const options = {
'url' : config.urls.page,
'json' : true,
'auth': {
'user': config.auth.username,
'pass': config.auth.password
}
};
request(options, (error, response, body) => {
if (error) {
console.log(error);
}
callback(body);
});
}
我的控制器文件:
const express = require('express');
const router = express.Router();
const app = express();
const config = require('../config');
const page = require('../models/page');
let pageJSON = page(config, (json) => {
console.log(json); // This shows the JSON structure in console
return json;
});
console.log(pageJSON); // Undefined
// Manipulate JSON and pass request view accordingly using Express
您将不得不在控制器回调中处理 json 操作(或从中调用另一个回调):
let pageJSON = page(config, (json) => {
console.log(json); // This shows the JSON structure in console
processJSON(json);
});
pageJSON
是 undefined
因为您的模型没有返回任何内容。
我正在为使用 Node Request 将一些数据从模型文件传回控制器的最后一步而苦苦挣扎。
我已经成功地从我的模型文件设置了回调,它使用请求从外部源加载 JSON。
我的控制器可以访问它,但我认为在最后一步我仍然需要某种嵌套的第二个回调,因为我希望变量 pageJSON 包含 JSON 对象并且不能'不太清楚如何。
我觉得我遇到了一些困难,如果能对这个问题有新的看法,我们将不胜感激!感觉我现在错过了一些非常简单的东西(我希望!)
我的模型文件:
module.exports = function (config, callback) {
const request = require('request');
const options = {
'url' : config.urls.page,
'json' : true,
'auth': {
'user': config.auth.username,
'pass': config.auth.password
}
};
request(options, (error, response, body) => {
if (error) {
console.log(error);
}
callback(body);
});
}
我的控制器文件:
const express = require('express');
const router = express.Router();
const app = express();
const config = require('../config');
const page = require('../models/page');
let pageJSON = page(config, (json) => {
console.log(json); // This shows the JSON structure in console
return json;
});
console.log(pageJSON); // Undefined
// Manipulate JSON and pass request view accordingly using Express
您将不得不在控制器回调中处理 json 操作(或从中调用另一个回调):
let pageJSON = page(config, (json) => {
console.log(json); // This shows the JSON structure in console
processJSON(json);
});
pageJSON
是 undefined
因为您的模型没有返回任何内容。