2017-10-13 4 views
0

nodejsを使用してzohoメールのcaldavを使用して、バックエンドからカレンダーと通信したいとします。誰も私にそれを実装する方法を提案することができますか? プラグインノード-caldav-modを使用していますnode.jsのCalDavを使用してzohoカレンダーからイベントを読み取って取得する方法

私は動作していないこのコードを試しました。

var caldav = require("node-caldav-mod"); 
var moment = require('moment-timezone'); 
var express = require('express'); 
var app = express(); 
var xmljs = require("libxmljs"); 
var https = require("https"); 

var CalendarId = "2123123123"; 
var url = "https://calendar.zoho.com/caldav/{CalendarId}/events"; 
var username = "username" 
var password = "password" 
var timeFormat = "YYYYMMDDTHHmms"; 
var getTodayEvent = function (callback){ 
    var startDate = moment().set({'hour': 0,'minute': 0,'second': 0}).format(timeFormat) + "Z"; 
    var endDate = moment().set({'hour': 23,'minute': 59,'second': 59}).format(timeFormat) + "Z"; 
    var output = {}; 
    output.startDate = startDate; 
    output.endDate = endDate; 

    caldav.getEvents(url, username, password, startDate, endDate, function(response){ 
     console.log(response); 
    callback(response); 
    }); 
} 
var findPropertyNameByRegex = function(o, r) { 
    var key; 
    for (key in o) { 
     if (key.match(r)) { 
     return key; 
     } 
    } 
    return undefined; 
    }; 
    function compare(a,b) { 

    var startDate_a = findPropertyNameByRegex(a, "DTSTART"); 
    var startDate_b = findPropertyNameByRegex(b, "DTSTART"); 

    if (a[startDate_a] < b[startDate_b]) 
     return -1; 
    else if (a[startDate_a] > b[startDate_b]) 
     return 1; 
    else 
     return 0; 
    } 


    app.get('/today',function(req, res){ 
     getTodayEvent(function(events){ 
      events.sort(compare); 
      res.send("Communication set up properly!") 
     }) 
    }); 

これは、誰かがこのコードで間違って何を教えてもらえますか?私は

Parsing..... 
undefined 
Error parsing response 
TypeError: Cannot read property 'D:multistatus' of undefined 

を取得していますエラーですか

+0

誰でも私にこの問題の解決策を提案できますか?私は最後の2日以来、これ以上私の頭を壊している。どんな助けでも大歓迎です – Anamika

答えて

2

誰かがこのコードで何が問題なのか教えてください。

はい。あなたのエラーは、使用するように見えるモジュールに this line から来ているようだ:

全くナンセンスです
var data = result['D:multistatus']['D:response']; 

D:は名前空間の接頭辞に過ぎず、サーバーが選択するものであれば何でもかまいません。 CalDAVクライアントは、XML名前空間を適切に解析して処理する必要があります。

解決方法:適切なモジュールを使用するか、自分で書き込んでください。

関連する問題