Ich arbeite auf Couchbase Lite WPF-Projekt. Ich möchte Termine nach Datum bekommen. Also habe ich eine Ansicht mit folgendem Code erstellt.So verwenden Sie Abfrage in 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;
}
So funktioniert dieser Code, aber es gibt ein Problem. Zum Beispiel. Ich habe die Ansicht in 2016.05.06 erstellt. Die Ansicht gibt die Termine des Tages korrekt zurück. Aber es gibt dieselben Daten auch heute wieder. Ich bin mir nicht sicher, was falsch ist. Ich bin verwirrt über Ansicht und Abfrage. Ich kann die Ansicht nicht wie SQL-View-Tabelle verwenden?
Hallo Hod, Danke für Ihre Antwort. Dann wie kann ich eine Abfrage wie die Logik machen. Wenn Sie einen Beispielcode haben, bitte senden Sie mir. – Meteoric
Ich kann das nicht wirklich auf Stack Overflow tun (es passt nicht zu den Buchungsrichtlinien). Ich schlage vor, die Couchbase Foren (https://forums.couchbase.com/t/how-to-use-query/12757/2) zu verfolgen. – Hod