Detta är del av en artikelserie Guppy – Hur bygger man en riktig tjänst med Azure Mobile Services?

Ibland (ofta) räcker det inte med att gå emot en tabell i sin databas, vilket är standarden för Azure Mobile Services. När detta inte räcker kan man använda sig av T-SQL istället. I Guppy har jag exempelvis många joins för att hitta rätt information. Detta är inget som helst problem att göra detta.

Här är ett exempel:

 var query = "select top 1 pfu.positionName, g.groupName from groupy.PositionForUser pfu " +
"join groupy.PositionRegistredForGroups prfg on pfu.id = prfg.positionId " +
"join groupy.[Group] g on prfg.groupId = g.id " +
"where pfu.userId = ? " +
"order by pfu.checkInTime desc"

mssql.query(query, [userId], {success: function(results){
request.respond(statusCodes.OK, results);
}});

 

Först skapar jag själva satsen som skall utföras i T-SQL. Observera att jag använder mig av ett ? som platshållare för de parametrar som jag sedan skall infoga.

Sedan använder jag mig av objektet mssql för att göra själva frågan och precis som med andra objekt så använts ett asynkront mönster, vilket innbär att jag bland annat anger vilken metod som skall köras när frågans svar returneras. Det är detta som defineras i den tredje parametern till mssql.query(). 

Observera att mssql skiljer sig lite ifrån samma objekt i Node.sj. Man behöver inte ange någon connection string och man kan ange separata call-backs för success och error.