我有一个node.js应用程序来调用API。 API在第一次调用时运行良好,但在第二次调用时,它会返回以下错误消息:
404 Not Found: Requested route ('abc.mybluemix.net') does not exist.
请帮助查看app.js功能:
app.js
app.get('/abc/:provider_id/staffs', function(request, response) {
console.log("Get method invoked.. ")
db = cloudant.use(dbCredentials.dbStaff);
//db = cloudant.use("staffs");
var docList = [];
db.list(function(err, body) {
if (!err) {
var len = body.rows.length;
console.log('total # of docs -> '+len);
if(len == 0) {
// error
} else {
var i = 0;
body.rows.forEach(function(document) {
db.search('allstaff', 'allstaff_index', {q:"provider_id:"+request.params.provider_id}, function(err, doc) {
if (!err) {
if(doc['_attachments']) {
// todo
} else {
var responseDataStaff = createResponseDataStaffs(
doc.rows[i].fields.id,
doc.rows[i].fields.provider_id,
doc.rows[i].fields.firstname,
doc.rows[i].fields.lastname,
doc.rows[i].fields.avatar,
doc.rows[i].fields.email,
doc.rows[i].fields.mobile,
doc.rows[i].fields.address,
doc.rows[i].fields.username,
doc.rows[i].fields.lastlogin,
doc.rows[i].fields.lastlogout
);
}
docList.push(responseDataStaff);
i++;
if(i >= doc.rows.length ) {
response.write(JSON.stringify(docList));
console.log('ending response...');
response.end();
}
} else {
console.log(err);
}
});
});
}
} else {
console.log(err);
}
});
答案 0 :(得分:3)
你第二次获得404的原因是因为你的应用程序崩溃了。 在推送到Bluemix之前在本地调试它。
要在本地调试,您需要为您的应用定义VCAP_SERVICES:
打开终端并输入cf env
将VCAP_SERVICES的内容复制到本地文件(例如VCAP_SERVICES.json)
使用此内容
在app.js(例如debugApp.js)旁边创建一个新文件if(!process.env.VCAP_SERVICES){
process.env.VCAP_SERVICES = JSON.stringify(require("./VCAP_Services.json"));
}
require('./app.js');
然后运行node debugApp.js
答案 1 :(得分:2)
我不确定你在这里想要做什么,但看起来很糟糕
我猜这不是你打算做的。