2017-06-02 8 views
0

CouchDBがホストされていますが、日付(文字列?)フィールドに "03-Mar-2007"のような値があります。私はパウチDBを使用して遠隔からデータを取り出し、物事を行う角度のアプリを持っています。PouchDBの日付(文字列)を比較します。

日付の値が現在の日付よりも小さいレコードを検索する必要があります。

私は以下のコードを使用しますが、動作しません。

db.createIndex({ 
       index: { 
        //fields: ['Pincode', 'subscriberid'] 
        fields: ['Pincode', 'IssueDtto'] 
       } 
      }).... 

私はレコードを検索する '検索' を使用します。

var cdate = getFormattedDate($scope.curdate); 

function getFormattedDate(date) { 
      var year = date.getFullYear(); 
      var month = (1 + date.getMonth()).toString(); 
      month = month.length > 1 ? month : '0' + month; 
      var day = date.getDate().toString(); 
      day = day.length > 1 ? day : '0' + day; 
      return day + '-' + monthNames[date.getMonth()] + '-' + year; 
     } 

db.find({ 
    selector: { 
    Pincode: { $eq: pin } 
    ,IssueDtto: { $lt: cdate } 
    } 

しかしこれは動作するようには思えません。私は間違って何をしていますか?助けてください。

おかげ

+0

https://github.com/nolanlawson/pouchdb-find/issues/235が面白いかもしれません – Phonolog

+0

ありがとう、私はこの質問を投稿する前にそれを試みましたが、うまくいきませんでした。 。 – NetTechie

答えて

0

は、私はちょうど唯一の他のセレクタを使用し、db.findから「日付」フィールドセレクタを削除し、回避策を作った、すべてのドキュメントおよび(手動)フィルター行を得ました。

angular.forEach(r.docs, function (val) { 
var dt = new Date(val.IssueDtto); 
if (dt < $scope.curdate) 
    $scope.todo.push(val); 
}); 
2

date.toISOString()から取得するISO形式などのソート可能な形式に日付を変換できます。日付は次のようになります。2007-03-01T00:00:00.000Z。文字列の並べ替えできれいに並べ替えられます。次に、インデックスを使用してfindを使用することもできます。

関連する問題