繁体   English   中英

Typescript错误属性'text'在类型'Object'上不存在

[英]Typescript Error Property 'text' does not exist on type 'Object'

我正在数据库中编辑,并且出现打字稿错误2339,这是代码

import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Storage } from '@ionic/storage';
import { Platform } from 'ionic-angular';
import { SQLite, SQLiteObject} from '@ionic-native/sqlite'; 
import { SQLitePorter } from '@ionic-native/sqlite-porter'
import { BehaviorSubject } from 'rxjs/Rx';
import 'rxjs/add/operator/map';

/*
  Generated class for the DatabaseProvider provider.

      See https://angular.io/guide/dependency-injection for more info on                     
providers
  and Angular DI.
*/
@Injectable()
export class DatabaseProvider {
    database: SQLiteObject;
    private dbReady: BehaviorSubject<boolean>;

  constructor(public http: HttpClient, private sqlitePorter: SQLitePorter,             private storage: Storage, private sqlite: SQLite, private platform: Platform)     
{
    this.dbReady = new BehaviorSubject(false);
    this.platform.ready().then(() => {
        this.sqlite.create({
            name: 'assessment.db',
            location: 'default'
        })
        .then((db:SQLiteObject) => {
            this.database = db;
            this.storage.get('database_filled').then(val => {
                if(val){
                    this.dbReady.next(true);
                }
                else{
                    this.fillDatabase();
                }
            })
        });
    });  
}

fillDatabase(){
    this.http.get('assets/test.sql')
    .map (res => res.text())
    .subscribe(sql => { 
        this.sqlitePorter.importSqlToDb(this.database, sql)
        .then(data => {
            this.dbReady.next(true);
            this.storage.set('database_filled', true);
        })
    });
}

  getDatabaseState(){
    return this.dbReady.asObservable();
  }

}

.map(res => res.text()),此部分返回错误。 我试图改变它并使它成为.map((res:Response)=> res.text()),然后会提示另一个错误,并且在该行this.sqlitePorter.importSqlToDb(this.database,sql)中出现错误是“类型的参数Promise不能分配给类型的参数。

使用HttpClient ,您不再需要映射Http调用的结果,因为它默认情况下返回结果而不是响应对象。 如果http调用的结果已经是字符串,则只需删除.map行。

fillDatabase(){
    this.http.get<string>('assets/test.sql')
    .subscribe(sql => { 
        this.sqlitePorter.importSqlToDb(this.database, sql)
        .then(data => {
            this.dbReady.next(true);
            this.storage.set('database_filled', true);
        })
    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM