2016-03-30 19 views
3

için azure-graphapi modülünü kullanarak kullanıcının güncellenmesi Node.js teknolojisini kullanarak Azure hesabımdaki bir kullanıcıyı güncellemeye çalışıyorum. İstek göndermek ve başlatmak için azure-graphapi modülü kullanıyorum. Aşağıdaki kodum.Node js

var GraphAPI = require('azure-graphapi'); 
var graph = new GraphAPI(appSettings.oauthOptions.tenantId, appSettings.oauthOptions.clientId, appSettings.oauthOptions.clientSecret); 
var reqHeaders = { "content-type": "application/json" }; 
var reqBody = { 
      "department": "Sales", 
      "usageLocation": "US" 
     } 
    var person = { 
     userId: userID 
    }; 

graph.patch('users/f0eceb4f-xxxx-409a-xxxx-4e3exx4e3157', JSON.stringify(reqBody), reqHeaders, function (err, user) { 
     if (!err) { 
      console.log(user); 
     } 
     else { 
      console.log(err); 
     } 
    }); 

Hatta içerik Tipi başlığını sağladıktan sonra o kadar bana bir hata atıyor "{[Hata: Graph API Hata:. 400 (Bad Request) Content-Type başlığı değeri eksik] statusCode: 400}"

Bu konuda bana yardımcı olabilecek herhangi bir kişi varsa çok yardımcı olacaktır.

cevap

2

Kullandığınız bu modülde bazı hatalar var. kod çalışması için, node_modules/auzre-graphapi kaynak kodu GraphAPI.js bazı ek değişikliklere yapmalıdır: Line 195 ile

Başlat, orada bir if koşul stmt yazar line 199 beri kullanılmaktadır content tanımlamak için unutmak gibi görünüyor, ve Gönderi gövdesini buffer nesnesine ayırmanız gerekiyorsa, içerik türü üstbilgisini ayarlar. Yani, biz hızlı bir şekilde kodunu değiştirebilirsiniz:

if (data) { 
     if (Buffer.isBuffer(data)) { 
      options.headers['Content-Type'] = contentType; 
     } else if (!contentType) { 
      content = data; 
      if (typeof content === 'string') { 
       options.headers['Content-Type'] = 'application/x-www-form-urlencoded'; 
       options.headers['Content-Length'] = content.length; 
      } else if (content !== null && typeof content === 'object') { 
       content = JSON.stringify(content); 
       options.headers['Content-Type'] = 'application/json'; 
       options.headers['Content-Length'] = content.length; 
      } 
     } else { 
      if (typeof contentType === 'string') { 
       options.headers['Content-Type'] = contentType; 
      } else if (contentType['Content-type'] !== null) { 
       options.headers['Content-Type'] = contentType['Content-type']; 
      } 
     } 
    } 

Ve sonra kodu olarak başlık ayarlayın: böylece, yanıt gövdesinde eğer başarı olmadan cevap 204, var reqHeaders = { "Content-type": "application/json" };

BTW update user document atıfta olarak, bu olacak senin Başarı durumunda kod "undefined" yazdıracaktır. 4/19/2016

yazar artık bakım paketi değil, o evrensel Grafik API'leri için yeni bir paket graph-service yarattı gibi

güncelleme. https://github.com/fhellwig/azure-graphapi/issues/5#issuecomment-211392546

'a bakın.