我创建了新的MobileServiceClient。我能够通过配置的身份提供程序登录并使表工作正常。
mUserLoginTable = mClient.getTable("User_Login", UserLogin.class);
当我尝试检查我的表中是否存在已登录的用户时会出现问题。
第一版:
mUserLoginTable.where().field("facebook_id").eq(_user.getUserId()).execute().get();
第二版:
public boolean ChekIfGoogeUserExists() throws ExecutionException, InterruptedException {
AsyncTask<Void, Void, Boolean> task = new AsyncTask<Void, Void, Boolean>(){
@Override
protected Boolean doInBackground(Void... params) {
try {
List<UserLogin> result;
ListenableFuture<MobileServiceList<UserLogin>> future = mUserLoginTable.where().field("google_id").eq(_user.getUserId()).execute();
return future.get().isEmpty();
} catch (Exception exception) {
return false;
}
}
};
return runAsyncTask(task).get();
}
似乎没什么用,android只是挂起请求帮助!
我已经使用SqlServer在我的azure数据库中创建了User_Login表。然后我添加了Azure MobileService EasyTable&#34; User_Login&#34;名称。它正确地从数据库中找到并映射了User_Login表(列是自动添加的)。现在访问权限设置为匿名。
我在AppServiceEditor中为User_Login定义了读取函数:
var table = module.exports = require('azure-mobile-apps').table();
table.read(function (context) {
return context.execute();
});
(默认情况下已将其注释掉了,并且没有帮助)
答案 0 :(得分:0)
有两个问题。
第一个我使用
.inputfield("facebook_id")
正确的似乎是
.inputfield(val("facebook_id"))
第二,我使用
.get()
在主要的thresd上执行网络操作
它导致Android应用程序中的freeeze。谢谢你的帮助!