Я не могу делать какие-либо грубые операции с моим mon go -stitch db из метода on.create в моей android основной деятельности - PullRequest
0 голосов
/ 10 апреля 2020

Я создаю приложение для обмена сообщениями, используя android и mon go -db, и пытаюсь инициализировать пользовательский объект чата, который я создал в методе chatActivities oncreate.

В этой инициализации я также инициализирую пользовательский объект dbhelperclass, который выполняет всю аутентификацию для текущего зарегистрированного пользователя на стороне mon go.

Моя проблема в том, что после того, как я инициализирую этот объект чата и затем вызываю chat.getDBHelper. (Выполните любую операцию crud), я получаю ошибку при компиляции, говоря, что эта операция требует аутентификации.

Вот код инициализации chatActivity для создания.

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.chat_room);


    ListView messageView = (ListView) findViewById(R.id.messages_view);

    currChat = new Chat(messageView, this);


    // this is a big problem I cant initialise messages here
    currChat.getMessages(currChat.getChatRoomId(),currChat.getUserId());
}

Вот мой код конструктора чата

private String chatRoomId;
private String userId;
private String[] members;
public DbHelperClass dbHelperClass =new DbHelperClass();
public MessageAdapter chatPipe;
ListView messageList;

public Chat(ListView messageView, Context use){

    //test
    setUserId(dbHelperClass.getCurrUser().getId());
    setChatRoomId("5e7ea2831c9d440000cb1961");

    this.messageList = messageView;

    chatPipe = new MessageAdapter(use, chatRoomId, this);
    messageView.setAdapter(chatPipe);



}

}

И, наконец, мой класс DbHelper код конструктора, который выполняет всю аутентификацию на стороне сервера

public class DbHelperClass {


RemoteMongoClient mongoClient;
StitchUser currUser;
StitchAppClient client;

public DbHelperClass() {

    try {


        // test for development
        UserPasswordCredential credential = new UserPasswordCredential("xxxxxxx", "xxxxxx");
        client = Stitch.initializeDefaultAppClient("xxxxxx");

        client.getAuth().loginWithCredential(credential);
        System.out.println(client.getAuth().getUser().getId());
        currUser = client.getAuth().getUser();


    //mongodb-stitch-atlas



    } catch (Exception e) {
        e.printStackTrace();
    }

    mongoClient = client.getServiceClient(RemoteMongoClient.factory, "mongodb-atlas");


}

}

Вот исключение, которое происходит, когда я запускаю свое приложение на эмуляторе

2020 -04-10 17: 31: 59.757 19790-19790 / com.zach.gamemessageapp D / chat: не удалось получить сообщения com.mongodb.stitch.core.StitchClientException (MUST_AUTHENTICATE_FIRST): вызываемый метод требует аутентификации на com.mongodb.stitch .core.auth.internal.CoreStitchAuth.prepareAuthRequest (CoreStitchAuth. java: 295) на com.mongodb.stitch.core.auth.internal.CoreStitchAuth.doAuthenticatedRequest (CoreStitchAuth. * 103 7 *: 157) в com.mongodb.stitch.core.auth.internal.CoreStitchAuth.doAuthenticatedRequest (CoreStitchAuth. java: 172) в com.mongodb.stitch.core.services.internal.CoreStitchServiceClientImpl.callFunction. 1039 *: 113) на com.mongodb.stitch.core.services.mongodb.remote.internal.FindOperation.execute (FindOperation. java: 107) на com.mongodb.stitch.core.services.mongodb.remote.internal .FindOperation.execute (FindOperation. java: 31) на com.mongodb.stitch.core.services.mongodb.remote.internal.CoreRemoteMongoIterableImpl.iterator (CoreRemoteMongoIterableImpl. java: 62) на com.mongodb.stitchc. .services.mongodb.remote.internal.CoreRemoteMongoIterableImpl.forEach

Я не понимаю, что здесь происходит. Я инициализировал переменную dbhelper в объекте chat, который затем инициализируется в методе oncreate для chatActivity. Разве я не могу вызывать операции crud для этого объекта чата после его создания?

В любом случае, с моей стороны стоит отметить, что я могу выполнять операции crud с этим объектом чата в методе вне метода oncreate () для chatActivity, вызов crud аутентифицирован то.

...