2014-02-21 4 views
0

У меня проблема, как поддержать мой запрос с мобильного сервиса в Windows Azure. Проблема: Как я могу проверить, если у моего ответа на клиент с сервера есть какая-либо запись или нет. У меня есть, но это didin't работатьWindows azure mobile service script

function read(query, user, request) { 
if (query.take(recordCount) > 0) { 
    request.respond(200, "Exist"); 
} else { 
    request.respond(500, "ERROR"); 
} 

ответ

1

Вот пример, глядя на результаты запроса:

function read(query, user, request) { 

    request.execute({success: function(results) { 
     console.log(results); 
     request.respond(200, results); 
    }, error: function(error) { 
     console.log('error: ', error); 
     request.respond(500); 
    }}); 

} 

Внутри блока успеха вы можете проверить, чтобы убедиться, что результаты не пусто и ответьте 200, если есть результаты или 500, если нет. Если вы не хотите выполнять полный запрос на чтение, вы можете использовать модуль mssql для выполнения пользовательского оператора sql (т. Е. Выбрать count (*) из tablename).

+0

, как проверить результат не пуст? – user3125146

+0

Результаты! == null && results.length! = 0 – Chris

+1

Если вызывается обработчик 'success', вы можете предположить, что результаты не равны нулю. – carlosfigueira

1

В дополнение к тому, что предложил @Chris, вы также можете использовать функцию includeTotalCount(), а также take(0) (если вы только заботитесь о количестве результатов, а не о результатах сами), чтобы считать только элементы, которые будут возвращены в запросе:

function read(query, user, request) { 
    query.includeTotalCount(); // tell me how many items there are 
    query.take(0);    // but don't bother returning them 
    request.execute({ 
     success: function(results) { 
      if (results.totalCount > 0) { 
       request.respond(200, { status: 'Item exists' }); 
      } else { 
       request.respond(500, { status: 'ERROR' }); 
      } 
     } 
    }); 
} 

или, если на самом деле все, что вы хотите знать, есть ли какие-либо результаты или нет, вы можете даже пропустить includeTotalCount вызов, и просто заставить ответ вернуться 1 результат с take(1) телефон:

function read(query, user, request) { 
    query.take(1);    // return at most one item 
    request.execute({ 
     success: function(results) { 
      if (results.length > 0) { 
       request.respond(200, { status: 'Item exists' }); 
      } else { 
       request.respond(500, { status: 'ERROR' }); 
      } 
     } 
    }); 
}