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創建了該視圖。該視圖正確返回當天的約會。 但它今天也返回相同的數據。我不確定什麼是錯的。 我對查看和查詢感到困惑。 我不能像SQL視圖表一樣使用視圖嗎?
嗨,霍德,謝謝你的回答。 那麼我怎樣才能做出像邏輯查詢。如果您有任何示例代碼,請發送給我。 – Meteoric
我無法真正在Stack Overflow上做到這一點(它不符合發佈準則)。我建議在Couchbase論壇上進行跟進(https://forums.couchbase.com/t/how-to-use-query/12757/2)。 – Hod