【问题标题】:How to properly use pouchdb in Angular2 and Ionic2?如何在 Angular2 和 Ionic2 中正确使用 pouchdb?
【发布时间】:2019-02-17 06:27:32
【问题描述】:

我正在尝试转换为 Angular 2 (Ionic2),而我的应用使用 pouchDB。

在 Angular1 中,我使用带有小写 pouchDB 的 var _usersDatabase = pouchDB(CouchConstants.COUCHDB_USERS_DB_NAME);,而没有使用 new。但是 TypeScript 编译器在抱怨,所以我这样做了:

import { Injectable } from '@angular/core';
import { LocalStorageService } from 'angular-2-local-storage';
import { UtilsService } from '../providers/utils-service';
import { MigrationService } from '../providers/migration-service';
import { CouchConstants } from '../couch-constants';
import PouchDB from 'pouchdb';




@Injectable()
export class UsersDatabase {



    constructor(
        private storageService: LocalStorageService
        , private UtilsService: UtilsService
        , private MigrationService: MigrationService

    ) {


    'use strict';


    var _usersDatabase = new PouchDB(CouchConstants.COUCHDB_USERS_DB_NAME);
    //We attach the function if necessary
    if (_usersDatabase.updateReplication == null) {
        _usersDatabase.updateReplication = function (newDocsIds) {
                    console.info("Updating replications with: ");
                    console.info(newDocsIds);
                    ...

但我收到此错误:

Typescript Error
Property 'updateReplication' does not exist on type 'Database<{}>'.
src/providers/users-database.ts
    //We attach the function if necessary
    if (_usersDatabase.updateReplication == null) {

【问题讨论】:

    标签: angular ionic2 pouchdb


    【解决方案1】:

    要在 TypeScript 项目中导入 PouchDB,您需要:

    // Correct
    import * as PouchDB from 'pouchdb';
    

    而不是:

    // Incorrect
    import PouchDB from 'pouchdb';
    

    另外,我不相信 updateReplication 是受支持的 PouchDB API,这可能就是您看到 TypeScript 警告的原因。

    【讨论】:

    • Nlawson 本人,谢谢,我改变了导入 pouchdb 的方式。我编辑了问题以显示 updateReplication 是添加到 _usersDatabase 的自定义方法,我该如何编写代码以避免此错误:Typescript Error Property 'updateReplication' does not exist on type 'Database&lt;{}&gt;'.
    • 还有@nlawson,新的需要声明 pouchDB 吗?因为在 angular1 中我没有使用它。
    【解决方案2】:

    我刚刚使用 angular-cli 安装了 PouchDB For Angular 2 + Typescript。这就是我所做的,它对我有用:

    1. ng new SOMENAME
    2. npm install --save pouchdb
    3. npm install --save-dev @types/pouchdb
    4. 在你的 app.component import PouchDB from 'pouchdb';
    5. 在您的应用组件类public db: any; 和初始化this.db = new PouchDB('test'); // , {storage:'persistent'} not working in typescript without updating typings

    见https://github.com/nolanlawson/pouchdb-find/issues/201。

    如果在出现 EPERM 错误的 Windows 上安装软件包时遇到问题,请使用 (f.e.) npm install --save pouchdb --no-optional 禁用警告。安装应该还是没问题的。欲了解更多信息,请参阅https://github.com/npm/npm/issues/17671

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-07
      • 2018-06-15
      • 1970-01-01
      • 2016-11-25
      • 2017-06-08
      • 2016-10-14
      相关资源
      最近更新 更多