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

如何在Angular2和Ionic2中正确使用PockDB?,angular,ionic2,pouchdb,Angular,Ionic2,Pouchdb,我正在尝试转换为Angular 2(Ionic2),我的应用程序使用PockDB 在Angular1中,我使用的是var\u usersDatabase=pouchDB(couchctants.COUCHDB\u USERS\u DB\u NAME)带有小写字母,没有new。但是TypeScript编译器在抱怨,所以我这样做了: import { Injectable } from '@angular/core'; import { LocalStorageService } from 'ang

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

在Angular1中,我使用的是
var\u usersDatabase=pouchDB(couchctants.COUCHDB\u USERS\u DB\u 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) {
Typescript错误
类型“Database”上不存在属性“updateReplication”。
src/providers/users-database.ts
//如有必要,我们将附加该函数
if(_usersDatabase.updateReplication==null){

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

// Correct
import * as PouchDB from 'pouchdb';
而不是:

// Incorrect
import PouchDB from 'pouchdb';

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

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

// Correct
import * as PouchDB from 'pouchdb';
而不是:

// Incorrect
import PouchDB from 'pouchdb';

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

我刚刚使用Angular cli为Angular 2+TypeScript安装了PockDB。这就是我所做的,它对我很有用:

  • ng新名字
  • npm安装--保存数据库
  • npm安装--保存dev@types/backdb
  • 在你的app.component中
    从'pockDB'导入pockDB;
  • 在您的应用程序组件类中,{code>public db:any;
  • 和to init
    this.db=new-pockdb('test');//,{storage:'persistent'}在不更新打字的情况下无法在typescript中工作


    如果在windows上安装软件包时出现EPERM错误,请使用(f.e.)
    npm安装--保存PockDB--无可选的
    来禁用警告。安装应该仍然可以。有关更多信息,请参阅

    我刚刚使用Angular cli安装了Angular 2+类型脚本的PockDB。这就是我所做的,它对我有用:

  • ng新名字
  • npm安装--保存数据库
  • npm安装--保存dev@types/backdb
  • 在你的app.component中
    从'pockDB'导入pockDB;
  • 在您的应用程序组件类中,{code>public db:any;和to init
    this.db=new-pockdb('test');//,{storage:'persistent'}在不更新打字的情况下无法在typescript中工作

  • 如果在windows上安装软件包时遇到EPERM错误,请使用(f.e.)
    npm install--save pockdb--no optional
    来禁用警告。安装应该还可以。有关更多信息,请参见

    Nlawson本人,谢谢,我更改了导入pockdb的方式。我编辑了这个问题,以显示updateReplication是添加到_usersDatabase的自定义方法,我如何对其进行编码以避免此错误:
    Typescript错误属性“updateReplication”在类型“Database”上不存在。
    和@nlawson,声明PockDB需要新属性吗?因为在angular1中我没有使用它。nlawson本人,谢谢,我更改了导入PockDB的方式。我编辑了该问题以显示updateReplication是添加到_usersDatabase的自定义方法,如何我是否可以对此进行编码以避免此错误:
    Typescript错误属性“updateReplication”在类型“Database”上不存在。
    和@nlawson,声明PockDB是否需要新属性?因为在angular1中我没有使用它。