2016-11-18 6 views
0

У меня есть приложение node.js для вызова API. API хорошо работает по первому зову, но на второй вызов, он возвращает сообщение об ошибке:Bluemix - Cloudant node.js: Ошибка при вызове 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); 
      } 
     }); 

и файл журнала: enter image description here

+0

Что говорят журналы? – yashpandey

+0

@yashpandey: Я просто добавил файл журнала. Пожалуйста, помогите превью. Tks –

+0

Невозможно прочитать полные журналы, можете ли вы сделать полный снимок? – yashpandey

ответ

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

+0

tks так много ... позвольте мне попробовать :) –

2

Я не уверен, что вы пытаетесь достичь здесь, но это выглядит плохо

  1. Вы вызываете db.list, чтобы получить список всех ваших документов - достаточно справедливо
  2. Затем вы перебираете каждый документ в списке, чтобы дать переменную «документ», которую вы никогда не используете
  3. Затем вы отправляете запрос запросите Cloudant для каждого документа, который вы получили в списке. Эти поисковые запросы будут выполняться параллельно, поскольку они запускаются в цикле for. Все поисковые запросы идентичны и не содержат ничего о документе, который вы извлекли.

Я предполагаю, что это не то, что вы намеревались сделать.