Не могу сделать какие-либо грубые операции на моем приложении go * - PullRequest
0 голосов
/ 27 марта 2020

В течение последних двух дней, когда я вхожу как зарегистрированный пользователь в mon go, прошиваем и запускаю операцию вставки в коллекцию, в которой написано "(NO_MATCHING_RULE_FOUND): NoMatchingRuleFound: com.mongodb.stitch.core.StitchServiceException: вставить не разрешено ", хотя у меня правильно заданы правила этой c коллекции.

Вот часть инициализации моего класса DbHelper

public class DbHelperClass {


RemoteMongoClient mongoClient;
StitchUser currUser;

public DbHelperClass() {

    try {


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

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


        currUser = client.getAuth().getUser();




        mongoClient = client.getServiceClient(RemoteMongoClient.factory, "*****");
    } catch (Exception e) {
        e.printStackTrace();
    }


}

И я знаю, что мой пользователь вошел в систему потому что я печатаю ID пользователя, чтобы проверить также

Я не хочу помещать в огромный журнал для инициатора эмулятора, но я заметил одну вещь - утверждение в этом журнале

[initandlisten ] Коллекция сессий не настроена; ожидание до следующего сеанса refre sh интервал: поле expireAfterSeconds недопустимо для спецификации индекса. Спецификация: {ключ: {lastUse: 1}, имя: «lsidTTLIndex», expireAfterSeconds: 1800} 2020-03-27 02: 23: 19.827 10089-10089 / com.zach.gamemessageapp I / capi: CONTROL [initandlisten] Коллекция сессий не настроен; ожидание следующего интервала пожинания: config.system.sessions не существует

Я не уверен, что это проблема, но она выглядела неправильно

В самом конце этой инициализации я вызываю другую операцию поиска для извлечения членов из БД, но он говорит, что мне нужно аутентифицировать, ЧТО Я УЖЕ СДЕЛАЛ.

Когда я запускаю операцию вставки, о которой я упоминал в начале, logcat печатает

2020-03-27 02: 27: 43.118 10089-10089 / com.zach.gamemessageapp E / app: не удалось вставить документ с: (NO_MATCHING_RULE_FOUND): NoMatchingRuleFound: com.mongodb.stitch.core.StitchServiceException: вставка не разрешена в com.mongodb.stitch.core.internal.common.StitchError.handleRichError (StitchError. java: 94) в com.mongodb.stitch.core.internal.common.StitchError.handleRequestError (StitchError. java : 61) на com.mongodb.stitch.core.internal. net .StitchRequestClient.inspectResponse (StitchRequestClient. java: 49) на com.mongodb.stitch.core.internal. net .Stitch RequestClient.doRequest (StitchRequestClient. java: 67) на com.mongodb.stitch.core.auth.internal.CoreStitchAuth.doAuthenticatedRequest (CoreStitchAuth. java: 157) на com.mongodb.stitch.core.auth.internal. CoreStitchAuth.doAuthenticatedRequest (CoreStitchAuth. java: 172) на com.mongodb.stitch.core.services.internal.CoreStitchServiceClientImpl.callFunction (CoreStitchServiceClientImpl. java: 113) на com.mongodb.services. remote.internal.InsertOneOperation.execute (InsertOneOperation. java: 44) на com.mongodb.stitch.core.

это моя операция вставки

public void writeHelper(String msg) {

    /* must be eventually configured to send messages from specific users to specific chatroom */


    Document doc = new Document("message", msg);



    try {
        RemoteMongoCollection<Document> col = mongoClient.getDatabase("GmessageApp2").getCollection("ChatMessages");


        final Task<RemoteInsertOneResult> insertTask = col.insertOne(doc);
        insertTask.addOnCompleteListener(new OnCompleteListener<RemoteInsertOneResult>() {
            @Override
            public void onComplete(@NonNull Task<RemoteInsertOneResult> task) {
                if (task.isSuccessful()) {
                    Log.d("app", String.format("successfully inserted item with id %s",
                            task.getResult().getInsertedId()));
                } else {
                    Log.e("app", "failed to insert document with: ", task.getException());
                }
            }
        });


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

    }



}

и здесь это операция поиска, которую я использую, чтобы получить членов

public void getChatMembers(String chatId, ExistsCallBack eb) {


    RemoteMongoCollection<Document> col = mongoClient.getDatabase("GmessageApp2").getCollection("Chat");

    Task<Document> chatData = col.find(Filters.eq("_id", new ObjectId(chatId))).first();
    chatData.addOnCompleteListener(new OnCompleteListener<Document>() {
        @Override
        public void onComplete(@NonNull Task<Document> task) {
            if(chatData.isSuccessful()){
                Document result = chatData.getResult();
                eb.onExists(result);
            }

            else{
                Log.d("app","Failed to get members: "+chatData.getException());
            }
        }
    });

}

Я действительно не знаю, что делаю неправильно. У меня есть разрешение, разрешенное в mon go stitch, и оно дает мне эту аутентификацию и не соответствует правилу ошибки.

наконец, вот скриншот моих правил на mongodb для операции вставки

enter image description here

...