Java - 如何从 Android 中的 Azure 移动服务中检索和使用单个值
Java - How to Retrieve and use a single value from azure mobile services in Android
我是 azure 的新手,但我知道某些事情,例如如何检索数据并将数据存储到 azure,为此我遵循了 azure 的官方文档。
Link 在这里 - https://azure.microsoft.com/en-in/documentation/articles/mobile-services-android-get-started-data/
但问题是,本教程仅展示如何使用适配器和列表从 azure 中检索和使用数据。 我想知道,如何从 Azure 移动服务中检索单个值以及如何在 android.
中使用它
Plzz 为我提供后端代码(如果有的话)和 java 代码。提前致谢
您可以使用自定义 API 来做到这一点。看到这个link:https://azure.microsoft.com/en-us/documentation/articles/mobile-services-how-to-use-server-scripts/#custom-api
代码如下所示:
exports.post = function(request, response) {
response.send(200, "{ message: 'Hello, world!' }");
}
然后可以在 https://todolist.azure-mobile.net/api/APIFILENAME
到达。
如果你想访问 table 你可以这样做:
exports.post = function(request, response) {
var userTable = tables.getTable('users');
permissionsTable
.where({ userId: user.userId})
.read({ success: sendUser });
}
function sendUser(results){
if(results.length <= 0) {
res.send(200, {});
} else {
res.send(200, {result: results[0]});
}
}
然后您可以按照说明在您的 Android 客户端上使用 API:https://azure.microsoft.com/en-us/documentation/articles/mobile-services-android-call-custom-api/
您的应用程序的编写方式将改变此代码的方式 works/looks,但它看起来像:
ListenableFuture<MarkAllResult> result = mClient.invokeApi( "UsersAPI", MarkAllResult.class );
这会调用 API。您需要编写 class 和 Future 来处理结果。上面的页面对此进行了非常详细的解释。
我解决了。无需创建自定义 API.
只需遵循基础知识,这是代码:-
final String[] design = new String[1];
private MobileServiceTable<User> mUser;
mUser = mClient.getTable(User.class);
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
final MobileServiceList<User> result =
mUser.where().field("name").eq(x).execute().get();
for (User item : result) {
// Log.i(TAG, "Read object with ID " + item.id);
desig[0] = item.getDesignation(); //getDesignation() is a function in User class ie- they are getters and setters
Log.v("FINALLY DESIGNATION IS", desig[0]);
}
} catch (Exception exception) {
exception.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
designation.setText(desig[0]);
}
}.execute();
不要 忘记为 serialization
和所有对象创建 class User
。您还应该定义数组 .
如果你觉得它不工作,请随意写。
编辑:-
design[0]
是一个大小为 1 的数组。
eq(x)
等于 x
其中,x
变量包含我要从数据库 (azure) 指定的用户名。
最佳解决方案是在您的服务器上创建一个 api,它接受一个 ID 到 return 单个 object/tablerow。
在您的 android 应用中,您只需调用:
MobileServiceTable<YourClass> mYourTable;
mClient = new MobileServiceClient(
"https://yoursite.azurewebsites.net/",
mContext);
mYourTable = mClient.getTable(YourClass.class);
YourClass request = mYourTable.lookUp(someId).get();
// request -> https://yoursite.azurewebsites.net/tables/yourclass/someId
YourClass
应与服务器上的对象具有相同的属性。
我是 azure 的新手,但我知道某些事情,例如如何检索数据并将数据存储到 azure,为此我遵循了 azure 的官方文档。
Link 在这里 - https://azure.microsoft.com/en-in/documentation/articles/mobile-services-android-get-started-data/
但问题是,本教程仅展示如何使用适配器和列表从 azure 中检索和使用数据。 我想知道,如何从 Azure 移动服务中检索单个值以及如何在 android.
中使用它Plzz 为我提供后端代码(如果有的话)和 java 代码。提前致谢
您可以使用自定义 API 来做到这一点。看到这个link:https://azure.microsoft.com/en-us/documentation/articles/mobile-services-how-to-use-server-scripts/#custom-api
代码如下所示:
exports.post = function(request, response) {
response.send(200, "{ message: 'Hello, world!' }");
}
然后可以在 https://todolist.azure-mobile.net/api/APIFILENAME
到达。
如果你想访问 table 你可以这样做:
exports.post = function(request, response) {
var userTable = tables.getTable('users');
permissionsTable
.where({ userId: user.userId})
.read({ success: sendUser });
}
function sendUser(results){
if(results.length <= 0) {
res.send(200, {});
} else {
res.send(200, {result: results[0]});
}
}
然后您可以按照说明在您的 Android 客户端上使用 API:https://azure.microsoft.com/en-us/documentation/articles/mobile-services-android-call-custom-api/
您的应用程序的编写方式将改变此代码的方式 works/looks,但它看起来像:
ListenableFuture<MarkAllResult> result = mClient.invokeApi( "UsersAPI", MarkAllResult.class );
这会调用 API。您需要编写 class 和 Future 来处理结果。上面的页面对此进行了非常详细的解释。
我解决了。无需创建自定义 API.
只需遵循基础知识,这是代码:-
final String[] design = new String[1];
private MobileServiceTable<User> mUser;
mUser = mClient.getTable(User.class);
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
final MobileServiceList<User> result =
mUser.where().field("name").eq(x).execute().get();
for (User item : result) {
// Log.i(TAG, "Read object with ID " + item.id);
desig[0] = item.getDesignation(); //getDesignation() is a function in User class ie- they are getters and setters
Log.v("FINALLY DESIGNATION IS", desig[0]);
}
} catch (Exception exception) {
exception.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
designation.setText(desig[0]);
}
}.execute();
不要 忘记为 serialization
和所有对象创建 class User
。您还应该定义数组 .
如果你觉得它不工作,请随意写。
编辑:-
design[0]
是一个大小为 1 的数组。
eq(x)
等于 x
其中,x
变量包含我要从数据库 (azure) 指定的用户名。
最佳解决方案是在您的服务器上创建一个 api,它接受一个 ID 到 return 单个 object/tablerow。
在您的 android 应用中,您只需调用:
MobileServiceTable<YourClass> mYourTable;
mClient = new MobileServiceClient(
"https://yoursite.azurewebsites.net/",
mContext);
mYourTable = mClient.getTable(YourClass.class);
YourClass request = mYourTable.lookUp(someId).get();
// request -> https://yoursite.azurewebsites.net/tables/yourclass/someId
YourClass
应与服务器上的对象具有相同的属性。