2017-11-29 14 views
1

firstnameを検索してユーザー情報のセットを取得しようとしています。これはfirstnameと予約日付を返します(mongoDBから、mongooseスキーマはdate:Dateを使用します)。 Firstnameはtype = textで、予約日はtype = dateです。日付は未定義となり、エラーメッセージはです。エラー:[ngModel:datefmt]予想される2017-11-06T16:00:00.000Zはとなります。私は他の質問/答えを読んでいる。なぜなら、type = dateはオブジェクトを期待しているが、JSONは文字列を返すからだ。AngularJS日付文字列対オブジェクトエラー

私はAngular JSの新機能ですが、提案された方法を試しましたが、結果はありませんでした。私は何が欠けているのか分からない。私のコードに基づいて、特定のポインタを感謝

enter image description here

HTML

<form name="updateBookingsForm" ng-repeat="booking in ctrl.bookings" novalidate> 
    <input name="firstname" type="text" ng-model="booking.firstname" class="form-control" required> 
    <input name="date" type="date" ng-model="booking.date" class="form-control" required> 
</form> 

コントローラ

self.searchAllBookings = function() { 
    paAppAPI.searchAllBookings(self.term).then(function (result) { 
     console.log(result); //returns array and date undefined 
     self.bookings = result; 
     } 

    }).catch(function (err) { 
     console.log(err); 
     if (err.status == 404) { 
      self.message = "No bookings found"; 
      self.showMessage = true; 
     } 
    }); 
} 

サービス

self.searchAllBookings = function (term) { 
    var defer = $q.defer(); 

    $http.get("/api/booking?keyword=" + term).then(function (result) { 
     console.log(result); //returns array but date undefined 
     if (result.status == 200) { 
      defer.resolve(result.data); 
     } 
     else { 
      defer.resolve(null); 
     } 

    }).catch(function (err) { 
     console.log(err); 
     defer.reject(err); 
    }); 

    return defer.promise; 
}  

サーバ

app.get("/api/booking?", function (req, res) { 

    console.log("Search booking > " + req.query.keyword); 
    var keyword = req.query.keyword; 

    Booking.find({ 
     "firstname" : new RegExp('^'+keyword+'$', "i") 
    }, (err, result) => { 
     if (err) { 
      console.log(err); 
     } 
     res.status(200).json(result); 

     console.log(result); 
     // { _id: 5a1a4e1238dfaa65e5fa59a2, 
     // firstname: 'Emily', 
     // date: 2017-11-20T16:00:00.000Z, 
     // __v: 0 }, 

     console.log(result[0].date); //2017-11-06T16:00:00.000Z 

    }); 
});  

答えて

2

self.bookingsは配列ですとします。文字列を日付に変換する前にループする必要がある場合。

日付が未定義の場合は、現在の日付を割り当てます。それ以外の場合は、文字列をDateに変換します。

.then(function (result) { 
    console.log(result); //returns array but date is undefined 
    self.bookings = result; 
    for(var i=0; i< self.bookings.length; i++){ 
     self.bookings[i].date = new Date(self.bookings[i].date) : Date.now()) 
    } 


}) 
+0

この行を追加した後、私は、私は日付を取得行うself.booking.dateをログコンソールが、それがサービスに渡されていない – miintea

+0

は、uは、サービスまたはそれを表示するには、日付を通過したいです(日付は定義されていません) htmlで? –

+0

感謝します!出来た!私は自分のコードで間違いを犯しました。あなたのFORステートメントは正しいです! – miintea

関連する問題