kinvey извлечение и удаление не работает (AngularJS)

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

var query = new $kinvey.Query();
query.equalTo('_id', '5909e8084c68b1ef74fa4efc');
var dataStore = $kinvey.DataStore.collection('User1Bases', $kinvey.DataStoreType.Network);
var stream = dataStore.find(query);
    stream.subscribe(function onNext(entity) {

        // ...
    }, function onError(error) {
        // ...
    }, function onComplete() {
        //...
    });

Не могли бы вы мне помочь


person Miled Braik    schedule 04.05.2017    source источник
comment
Что вы имеете ввиду под не работает?   -  person Fabian Horlacher    schedule 04.05.2017
comment
ничего не возвращает   -  person Miled Braik    schedule 04.05.2017


Ответы (2)


Если вы позволите запустить код, который вы разместили, рассмотрите четыре вещи:

  1. Убедитесь, что у вас реализован Kinvey:

<script src="https://da189i1jfloii.cloudfront.net/js/kinvey-html5-sdk-3.10.2.min.js"></script>

  1. Убедитесь, что вы инициализировали службу Kinvey до:

        // Values shown in your Kinvey console
        Kinvey.init({
            appKey: '<your_appKey>',
            appSecret: 'your_appSecret'
        });

  1. Убедитесь, что вы вошли в систему с пользователем, у которого есть права на чтение вашей коллекции (должно быть нормально, если вы используете роль «Все пользователи» (по умолчанию)):

 var promise = Kinvey.User.login('<username>', '<password>')
            .then(function() {
              console.log ("You are logged in");
            })
            .catch(function(error) {
                console.log (error);
            });

  1. Выведите результат возврата, чтобы увидеть, что возвращается. Чтобы убедиться, что вы выполняете запрос ПОСЛЕ успешного входа в систему, вставьте запрос в функцию .then входа в систему. Я не уверен, что ваш запрос действителен для 3.x, так как многое изменилось, и я не работаю со старыми версиями Kinvey.

Чтобы все вместе выглядело так:

// Initialize Kinvey 
Kinvey.init({
            appKey: '<your_appKey>',
            appSecret: 'your_appSecret'
        });


// Login with already registered user        
var promise = Kinvey.User.login('<username>', '<password>')
            .then(function() {
              console.log ("You are logged in");
              
              // Your query
              var query = new $kinvey.Query();
        			query.equalTo('_id', '5909e8084c68b1ef74fa4efc');
        			var dataStore = $kinvey.DataStore.collection('User1Bases', $kinvey.DataStoreType.Network);
        			var stream = dataStore.find(query);
        			stream.subscribe(function onNext(entity) {
        			// Output of returning result
        			console.log (entity);

            // ...
        }, function onError(error) {
            // ...
        }, function onComplete() {
            //...
        });
              
            })
            .catch(function(error) {
                console.log (error);
            });     

Теперь возможны три набора возвратов:

  1. Ничего (как вы говорите) -> Что-то отсутствует/неправильно в коде (сравните ваше с моим)

  2. Пустой массив: по вашему запросу ничего не найдено, измените значения поиска.

  3. Одна или несколько записей в массиве -> Все отлично, то, что вы искали!

Надеюсь, это поможет!

person Jonny    schedule 19.04.2018
comment
Это то, что наконец помогло мне. Ключевым фактором было то, что для извлечения данных из коллекции требуется аутентифицированный пользователь. Я думал, что это можно сделать анонимно (только с идентификатором приложения и секретом приложения), но, похоже, это не так. Спасибо. - person Michael; 12.08.2018

При запросе по _id есть встроенный метод: http://devcenter.kinvey.com/angular/guides/datastore#FetchingbyId

Попробуйте переключиться на var stream = dataStore.findById('entity-id');

Также убедитесь, что у вас нет preFetch или postFetch BL, которые мешают выполнению запроса.

person Austin Moothart    schedule 04.05.2017
comment
Можете ли вы поделиться синтаксисом, который вы использовали? Я использую приведенный выше синтаксис и получаю соответствующие результаты или ошибки. Другие запросы работают? Мешает ли бизнес-логика вашему запросу? Вы также можете попробовать запрос из консоли API, чтобы убедиться, что запрос правильный. - person Austin Moothart; 05.05.2017