2017-02-26 97 views
2

vscode RxDB 所以我一直在努力使RXDB工作有一個新的項目,這幾天開始與角CLI使用命令RXDB Angular2-CLI「無極<void>」是不能分配給類型的參數「無極<any>」

ng new <Projectname> 

npm install rxdb 

然後創建一個服務作爲它在我有這條線的麻煩RXDB的例子

export class DatabaseService { 
     static db$: Observable<RxDatabase> = Observable.fromPromise(RxDB 
     .create('collectionD', adapters[useAdapter], 'myLongAndStupidPassword', true) 
.then(db => { 
     console.log('created Database'); 
     window['db'] = db; 

     db.waitForLeadership() 
      .then(() => { 
       console.log('isLeader Now'); 
       document.title = '♛ ' + document.title; 
      }); 
     console.log('DatabaseService: create Collections'); 
     const fns = collections 
      .map(col => db.collection(col.name, col.schema)); 
     return Promise.all(fns) 

      .then((cols) => { 
       collections.map(col => col.dbCol = cols.shift()); 
       return db; 
      }); 
    }) 
    // hooks 
    .then(db => { 
     db.collections.hero.preInsert(docObj => { 
      const color = docObj.color; 
      return db.collections.hero.findOne({color}).exec() 
      .then(has => { 
       if (has != null) { 
        alert('another hero already has the color ' + color); 
        throw new Error('color already there'); 
       } 
       return db; 
      }); 
     }); 
    }) 

    .then(db => { 
     console.log('created collections'); 
     return db; 
    }) 
) 

我得到這個錯誤,當我嘗試使用的WebPack

ERROR in G:/projects/src/app/services/database.service.ts (28,62): Argument of type 'Promise<void>' is not assignable to parameter of type 'Promise<any>'. Property '[Symbol.toStringTag]' is missing in type 'Promise<void>'.) 

運行線28是這樣的一個我下面由RXDB文檔中給出的示例

static db$: Observable<RxDatabase> = Observable.fromPromise(RxDB 
    .create('collectionD', adapters[useAdapter], 'myLongAndStupidPassword', true) 

的Vscode和ng服務都給出了相同的錯誤

+0

你會介意與我們分享第28行的'src/app/services/database.service.ts'中的代碼嗎? – mickdev

+0

db $'變量代表什麼?它是數據庫實例嗎?這是一個角度服務嗎?從你的代碼中不清楚你試圖存儲在這個變量中的東西。 – AngularChef

+0

@AngularFrance添加了更多代碼,db $表示我們將從客戶端數據庫 –

回答

0

感謝link you sent,我設法讓RxDB工作。

這是我的代碼到目前爲止。它創建了一個數據庫和集合:

import {Component} from '@angular/core'; 

const _Promise = Promise; 
const RxDB = require('rxdb'); 
RxDB.plugin(require('pouchdb-adapter-websql')); 
Promise = _Promise; 

const heroSchema = { ... }; 

@Component({ 
    selector: 'rxdb', 
    template: `RxdbComponent` 
}) 
export class RxdbComponent { 
    constructor() { 
    RxdbComponent.createDb() 
     .then(db => RxdbComponent.createCollection(db)) 
     .then(coll => console.log(coll)); 
    } 

    static createDb() { 
    return RxDB.create('tempDB', 'websql'); 
    } 

    static createCollection(db: any) { 
    return db.collection('users', heroSchema); 
    } 
} 

你能解釋一下你想在你的​​觀察到的包是什麼?它是數據庫實例嗎?集合?

可觀察到的是爲了發出的價值觀和我真的沒有看到包裝內可觀察到的(當然,這將使意義的集合或者數據庫實例或收集點,但RXDB已經支持露出查詢作爲本地觀察)。

+0

你可以做一個像r2工作的angular2初學者包的代碼回購?所以人們可以克隆它:)我認爲這是導致問題的typescipt版本之間的區別。 –

+0

我是在rxdb回購中的示例代碼,這就是爲什麼我做了 –

+0

哈。如果你知道你想要達到什麼,這將會有所幫助。 :/反正沒有什麼特別的關於我的堆棧。我只需要一個新的Angular應用程序和'npm install'的RxDB。從那裏你可以複製粘貼我放在這裏的代碼,它應該工作得一樣。 – AngularChef

相關問題