2017-06-03 9 views
1

私はAzure Cosmos DBに文書を持っています。条件に応じてCOSMOS DBからレコードを選択する方法

ITSは含まれています:

{ "id": "58d56db3b3f730153cab383c", "activityDate": "2017-02-11T19:04:18Z", ... ... }

私は3日より古い文書を選択するための要件を持っています。そのため

私が書かれています: // SAMPLEストアドプロシージャ

function deleteActivitiesBackDate(numberOfDays) { 
    var context = getContext(); 
    var collection = context.getCollection(); 
    var link = collection.getSelfLink(); 
    var response = context.getResponse(); 

var targetDate = new Date(); 

targetDate.setDate(targetDate.getDate() - 3); 
console.log("targetDate is "+targetDate); 


    var query = 'SELECT * FROM activities a WHERE a.activityDate < "' + targetDate+ '"'; 
    var run = collection.queryDocuments(link, query, {}, callback); 
    function callback(err, docs) { 
    if (err){ 
     return errorResponse(400, err.message); 
    } 
    if (docs.length > 0){ 
     for(var i =0;i<docs.length;i++){ 
     deleteDoc(docs[i]); 
     } 
    }else { 
     return errorResponse(400, "The document was not found."); 
    } 
    } 

    if (!run) { 
     return errorResponse(400, "The document could not be deleted."); 
    } 

    function deleteDoc(document) { 
    var docDeleted = collection.deleteDocument(document._self, function(err, result){ 
     if (err){ 
      return errorResponse(400, err.message); 
     } 
     response.setBody(result); 
    }); 

    if (!docDeleted) { 
     return errorResponse(400, "The document could not be deleted."); 
    } 
    }; 

    function errorResponse(code,message){ 
    var errorObj = {}; 
    errorObj.code = code; 
    errorObj.message = message; 
    errorObj.date = getDateTime(); 
    return response.setBody(errorObj); 
    } 

    function getDateTime(){ 
    var currentdate = new Date(); 
    var dateTime = currentdate.getFullYear() + "-" +(currentdate.getMonth()+1)+ "-" +  currentdate.getDate()+ " " +currentdate.getHours()+":"+currentdate.getMinutes()+":"+currentdate.getSeconds(); 
     return dateTime; 
    } 
} 

を、私はそれを固定し得るために何ができますか?あなたが現在のselect文は、日付()オブジェクトに文字列プロパティを比較している

var query = 'SELECT * FROM activities a WHERE a.activityDate < "' + targetDate.toISOString()+ '"'; 

+1

あなたは何を意味するか、activityDate' 'のタイプは、' var'のですか?それはタイプではありません。ドキュメント内の日付プロパティはどのように見えますか?エポックとして保管していますか?フォーマットされた文字列として?そして、 'targetDate'は何をレンダリングしますか? –

答えて

1

は、私はあなたがこのような.toISOString()関数を使用して見てselect文を変更したいと思います。

はまた、私はあなたがこの行を変更したいと思う:これに

targetDate.setDate(targetDate.getDate() - 3); 

を:

targetDate.setDate(targetDate.getDate() - numberOfDays); 
関連する問題