如何在Angular2和Ionic2中正确使用pouchdb?

时间:2017-03-26 20:06:16

标签: angular ionic2 pouchdb

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

在Angular1中,我使用var _usersDatabase = pouchDB(CouchConstants.COUCHDB_USERS_DB_NAME);使用小写的pouchDB而不使用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) {

2 个答案:

答案 0 :(得分:1)

要在TypeScript项目中导入PouchDB,您需要执行以下操作:

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

而不是:

// Incorrect
import PouchDB from 'pouchdb';

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

答案 1 :(得分:1)

我刚刚使用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
  6. 请参阅https://github.com/nolanlawson/pouchdb-find/issues/201

    如果在使用EPERM错误的窗口上安装软件包时遇到问题,请使用(f.e.)npm install --save pouchdb --no-optional来禁用警告。安装应该还可以。有关详细信息,请参阅https://github.com/npm/npm/issues/17671

相关问题