Массив из наблюдаемого возврата не определен - PullRequest
0 голосов
/ 26 сентября 2019

Я попытался подписаться на наблюдаемое возвращение массива, объект массива довольно хорошо печатается на консоли, но доступ к содержимому массива вызывает неопределенную ошибку и array.length print out 0;

// Наблюдаемая генерация, извлекающая возвращаемый массив из хранилища данных

    `getDataFromDatabase(sqlStatement:string, querydata?:any[]):Observable<any>{
    let datas:Array<any> = [];
    this.database.executeSql(sqlStatement, querydata?querydata:[]).then((data)=>{
    let len = data.rows.length;
    console.log('database data.rows', data.rows);
        for(let i =0; i<len; i++){
      let d= data.rows.item(i);
      datas.push(d);
        }
    },
    (err)=>{
        datas = err;
    }
    );

return observable.forkJoin(observable.of(datas));
    }`

// Функция, подписывающаяся на наблюдаемое

    `checkIfFirstTime():Observable<number>{
    this.database.getDatabaseState().subscribe(state=>{
        if(state){
            let query = "SELECT appLaunch AS al FROM User WHERE id = ?";
            this.database.getDataFromDatabase(query, [1]).subscribe(data=>{
                if(data!=null){
                    data = data[0];
                    console.log(data.length, ' - Check-auth.service 1...', data);
                    if(data[0].al){
                        let query2 = "SELECT pin AS pin FROM Setting WHERE id = ?";
                        console.log(query2);
                        this.database.getDataFromDatabase(query2, [200]).subscribe(data2=>{
                            data2 = data2[0];
                            if(data2[0].pin&&this.login){
                                this.authIndex = 1;
                            }
                            else if(data2[0].pin&&(!this.login)){
                                this.authIndex = 3;
                            }
                            else if(!data2[0].pin){
                                this.authIndex = 1;
                            }
                        });
                    }
                    else if(!data[0].al){
                        console.log('hey am here');
                        this.authIndex = 2;
                    }
                }
            });
        }
    });

    return observer.of(this.authIndex);
    }`

// результат ошибки

Array (1) 0: {al: 0} длина: 1__proto__: Array (0) "Check-auth.service 1 ..." Array (1) 0: [{…}] длина: 1__proto__: Array (0) ".... 3" 1 vendor.js: 55437 ОШИБКА TypeError: Невозможно прочитать свойство 'al' из неопределенного в SafeSubscriber._next (по умолчанию ~ home-home-module ~ pages-calendar-calendar-module ~pages-pin-link-pin-link-module ~ pages-Remde ~ b3c38b73.js: 9057) в SafeSubscriber.push ../ node_modules / rxjs / _esm5 / internal / Subscriber.js.SafeSubscriber .__ tryOrUnsub (vendor.js: 94208) в SafeSubscriber.push ../ node_modules / rxjs / _esm5 / internal / Subscriber.js.SafeSubscriber.next (vendor.js: 94146) в Subscriber.push ../ node_modules / rxjs / _esm5 / internal / Subscriber.js.Subs._next (vendor.js: 94089) в Subscriber.push ../ node_modules / rxjs / _esm5 / internal / Subscriber.js.Subscriber.next (vendor.js: 94066) в ForkJoinSubscriBer.Push._complete (vendor.js: 93292) в InnerSubscriber.push ../ node_modules / rxjs / _esm5 / internal / Subscriber.js.Subscriber.complete (vendor.js: 94078) в vendor.js: 104694 в subscribeToResult (vendor.js): 104875) defaultErrorLogger @ vendor.js: 55437 main.js: 3124 база данных data.rows Object`

1 Ответ

1 голос
/ 26 сентября 2019
 this.database.getDataFromDatabase(query, [1]).subscribe(data=>{
                if(data!=null){
                    data = data[0];

Вы переопределяете полученные данные и больше не являетесь массивом, поэтому они не могут получить 'al' в pos [0].

Попробуйте использовать другие и более описательные именачтобы ваши переменные не запутались.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...