2017-06-14 1 views
0

Iam essayant de se connecter à mon cloud en utilisant juste angulaire. Le premier message est réussi et je suis capable de récupérer un document/vue depuis le cloudant avec la première méthode get. Mais quand je fais une post-méthode successive, je reçois un message d'erreur non autorisé 401. Quelqu'un pourrait-il m'expliquer s'il vous plaît quelle erreur je fais ici. S'il vous plaît répondre en détail que je suis débutant avec angulaire et cloudant (arc RESTful)Connexion Pure Angular Cloudant

var app = angular.module('myApp', []); 
const ACCOUNTNAME = 'my acc'; 
const APIKEY = 'my key'; 
const APIPASSWORD = 'my pass'; 
const DATABASE = 'my db'; 
var cloudantDoc = 'link of document to update'; 

app.controller('tutorialCtrl', function($scope, $http) { 
//Authentication header settings 
var req = { 
    method: 'POST', 
    url: 'https://'+ACCOUNTNAME+'.cloudant.com/_session', 
    headers: { 
     'Content-Type': 'application/x-www-form-urlencoded' 
    }, 
    data: 'name='+APIKEY+'&password='+APIPASSWORD, 
    withCredentials: true 
} 

$http(req).then(function(result){ 
        //Grab data 
        req = { 
         method: 'GET', 
         url: 'https://'+ACCOUNTNAME+'.cloudant.com/'+DATABASE+'/_design/AllClients/_view/AllClients', 
         withCredentials: true 

        } 

        $http(req).then(function(result){ 
             $scope.tableData = result.data; 
             console.log(result); 
            }, 
            function(){ 
             console.log("Failed at grabbing data"); 
            }); 

       }, 
       function(){ 
        console.log('Failed at authenticating'); 
       } 
); 

$scope.revisionNumNews; 

    $http.post(cloudantDoc, JSON.stringify({"_id": "CLient1", "Client_Name":"ABC", "_rev": ""})).success(function(response){ 
       revisionNumNews = response.rev; 

      }); 

Répondre

0

dans votre code que vous avez var cloudantDoc = 'link of document to update', si vous essayez de mettre à jour un document existant, vous devrez faire une demande de PUT au lieu d'un POSTER. dans tous les cas, votre demande doit inclure l'option {withCredentials: true}.

si vous essayez de créer un nouveau document essayez de modifier votre requête POST à ​​quelque chose comme ceci:

var databaseUrl = 'https://' + ACCOUNTNAME + '.cloudant.com/' + DATABASE 

$http.post(databaseUrl, {'_id':'CLient1', 'Client_Name':'ABC'}, {withCredentials: true}) 
    .then(function(response) { 
     $scope.revisionNumNews = response.rev 
    }) 

cependant, si vous essayez de mettre à jour un document existant de votre devra faire une demande de PUT et inclure également la dernière _rev du document. il ressemblerait à quelque chose comme ceci:

var databaseUrl = 'https://' + ACCOUNTNAME + '.cloudant.com/' + DATABASE 

$http.put(databaseUrl + '/' + cloudantDocId, cloudantDoc, {withCredentials: true}) 
    .then(function(response) { 
     $scope.revisionNumNews = response.rev 
    }) 

cloudantDocId est l'identifiant du document du document mis à jour et se cloudantDoc est l'objet de document mis à jour (avec la dernière _rev)