En av de begränsningar som idag finns i Azure Mobile Services är att allt är tabellorienterat. Man skapar tabeller på serversidan och för varje tabell finns det fyra fördefinierade metoder som man kan anropa ifrån klientsidan: insert, update, delete och read. Hur gör man om man istället vill anropa någonting som inte primärt har en relation till någon av de tabeller som finns?
Idag måste man tweaka detta, eftersom det beskrivna ovan gäller. Det jag har gjort är att skapa en tom tabell med namnet på den metod som jag vill anropa. I mitt exempel nedan heter tabellen CheckInWithNFC. Sedan använder jag mig av funktionen insert, för den ligger mest rätt i det som jag vill göra i metoden, för att starta den.
Så här ser klientsidan ut. Detta exemplet är för Windows 8.
var tableCheckInWithNfc = App.MobileService.GetTable("CheckInWithNFC");
var nfcId = 120;
var item = new JObject(); item.Add("nfcId", nfcId); await tableCheckInWithNfc.InsertAsync(item);
Det första jag gör är att få tag på objektet som beskriver tabellen, tableCheckInWithNfc, sedan bygger jag upp de inparametrar som jag vill skicka med. I detta fall är det endast en parameter, nfcId. Dessa läggs in i en Json-lista. Till slut anropar jag insert på serversidan och skickar med inparametervariabeln.
Serversidan ser ut så här. Jag har bara tagit med det som är väsentligt för att beskriva lösningen.
function insert(item, user, request) { var nfcId = item.nfcId; ... }
Som ni ser, är det enkelt. Genom item.nfcId kommer jag åt det som jag skickade ifrån klienten. Nu kan jag utföra det som jag behöver i metoden.
Comments