PouchDB得到_id返回,也没有日期错误

时间:2017-05-23 10:17:25

标签: ionic2 pouchdb

在PouchDB数据库中,我有一些文档:

{
    _id: '765541',
    title: 'Mickey Mouse'
},
{
    _id: '78910',
    title: 'Donald Duck'
}

我正在尝试像这样运行get()方法:

localCharacter(id: string){
    let db = this._db;
    let character: any;
    console.log('Look for : ' + id + ' in local db');

    return new Promise(resolve => {
      db.get(id).then((result) => {
        console.log('Character: ' + JSON.stringify(result));
        character= result.row; 
      }).catch((error) => {
        console.log('Some errors : ' + error);
        character = false;
      });
      console.log('Resolve : ' + character);
      resolve(character);
    })
  }

但是跟随的消息一直在控制台中弹出:

Resolve undefined

注意:我也尝试了以下

db.get(id.toString(), {include_docs: true}).then((result)

但同样的事情......

3 个答案:

答案 0 :(得分:0)

正确的解决方法:

localCharacter(id: string){
let db = this._db;
let character: any;
console.log('Look for : ' + id + ' in local db');

return new Promise(resolve => {
  db.get(id).then((result) => {
    console.log('Character: ' + JSON.stringify(result));
    character= result.row;
    resolve(character); 
  }).catch((error) => {
    console.log('Some errors : ' + error);
    character = false;
    resolve(character);
  });
})
  }

希望它有所帮助...

答案 1 :(得分:0)

您甚至可以简化代码:

localCharacter(id: string) {
  return this._db.get(id).then(result => result.row).catch(err => false);
}

get方法本身返回一个promise,因此不需要将它包装到另一个promise中。

答案 2 :(得分:0)

根据PouchDB get() API及其示例响应,需要进行以下修改:

db.get(id).then((result) => {
    /* "result.row" is wrong */
    //character= result.row;
    /* Just do this: */
    character= result;
})
相关问题