0
私はcouchbase lite wpfプロジェクトに取り組んでいます。 私は日付で予定を取得したいと思います。そこで以下のコードでビューを作成しました。couchbase liteでのクエリの使い方
appointments.AddRange(App.StorageRepository.Query<AppointmentModel>(map, limit, offset, TodayWhere));
bool TodayWhere(IDictionary<string, object> accessDoc, IDictionary<string, object> parameters)
{
var tableName = parameters["table"].ToString();
if (!accessDoc["_id"].ToString().Contains(tableName))
{
return false;
}
var startDay = Convert.ToDateTime(accessDoc["startDate"].ToString());
var today = Convert.ToDateTime(parameters["today"].ToString());
if (startDay.Date != today.Date)
{
return false;
}
return true;
}
public List<T> Query<T>(IDictionary<string, object> map, int limit, int offset, Func<IDictionary<string, object>, IDictionary<string, object>, bool> monitoring)
{
List<T> list = new List<T>();
var viewName = map["view"].ToString();
var view = Manager.SharedInstance.GetDatabase(DatabaseName).GetView(viewName);
view.SetMap((doc, emit) =>
{
if (!monitoring(doc, map))
{
return;
}
emit(doc, null);
}, "1.0");
var query = view.CreateQuery();
query.Limit = limit;
query.Descending = true;
var queryResult =
query
.Run()
.ToList();
foreach (var item in queryResult)
{
var doc = GetObject<T>(item.Document.UserProperties);
list.Add(doc);
}
return list;
}
このコードは機能していますが、問題があります。 たとえば、 2016.05.06にビューを作成しました。このビューは、その日の予定を正しく返します。 しかし今日でも同じデータが返されます。私は何が間違っているのか分かりません。 私はViewとクエリについて混乱しています。 SQLビュー表のようなビューを使用できません。
こんにちは、あなたの答えをありがとう。 それでは、ロジックのようにクエリを作成するにはどうしたらいいですか?サンプルコードがあれば、私に送ってください。 – Meteoric
私は実際にスタックオーバーフローでそれを行うことはできません(投稿ガイドラインに合わない)。私は、Couchbaseフォーラム(https://forums.couchbase.com/t/how-to-use-query/12757/2)でフォローアップすることをお勧めします。 – Hod