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