0

我正在尝试向 LokiJS 添加侦听器,以便每当任何集合中的数据发生更改时我都会收到通知(尽管根据文档 LokiJS 支持数据更改通知)。但是我无法收到有关数据更改的通知。

下面是我正在使用的代码片段:

import { Component, OnInit } from '@angular/core';
import { Message } from 'primeng/components/common/api';
import { MessageService } from 'primeng/components/common/messageservice';

import * as loki from 'lokijs';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {

  db: loki;

  constructor(private messageService: MessageService) {

  }

  ngOnInit() {
    this.db = new loki('kp-loki.db');
    this.db.addCollection('kp_users', { asyncListeners: true });
    console.log(this.db.addListener('changes', event => console.log(event)));
  }

  add() {
    this.messageService.add({ severity: 'sucess', summary: 'data added' });
    const uu = this.db.getCollection('kp_users');
    uu.insert({ id: 1, name: 'kp', city: 'blr' });
  }

  view() {
    const uu = this.db.getCollection('kp_users');
    this.messageService.add({ severity: 'sucess', summary: JSON.stringify(uu.data) });
  }

}
4

1 回答 1

1

好的,我将寻找以下事件

  this.events = {
    'init': [],
    'loaded': [],
    'flushChanges': [],
    'close': [],
    'changes': [],
    'warning': []
  };

但我应该使用下面的事件,在改变监听器事件时,它起作用了

  // events
  this.events = {
    'insert': [],
    'update': [],
    'pre-insert': [],
    'pre-update': [],
    'close': [],
    'flushbuffer': [],
    'error': [],
    'delete': [],
    'warning': []
  };
于 2018-01-17T12:59:20.810 回答