Как правильно обрабатывать изменения подачи (следовать) в нано? - PullRequest
0 голосов
/ 28 апреля 2018

Я использую функцию nano follow для отслеживания изменений в базе данных couchdb. Во время работы я не могу остановить подачу без создания исключения. Вот мой код:

const nano = require("nano")("http://localhost:5984");
const name = "test";

nano.db.destroy(name, () => {
  nano.db.create(name, () => {
    const db = nano.use(name);
    const feed = db.follow({ since: "now" });

    // add doc every second
    const timer = setInterval(() => {
      db.insert({}, (err, body) =>
        console.log(err ? "ERROR" : "ADD " + body.id)
      );
    }, 1000);

    const handler = change => console.log("GOT " + change.id);
    feed.on("change", handler);

    // start feed after 5s
    setTimeout(() => feed.start(), 5000);
    // stop feed after 10s
    setTimeout(() => {
      clearInterval(timer);
      feed.stop();
    }, 10000);
  });
});

Однако это результат при запуске:

$ node startstop.js
ADD ae1b3a77338a73da2f3cb4cf162768e2
ADD ae1b3a77338a73da2f3cb4cf162768e9
ADD ae1b3a77338a73da2f3cb4cf162769cc
ADD ae1b3a77338a73da2f3cb4cf162773b6
ADD ae1b3a77338a73da2f3cb4cf1627757a
GOT ae1b3a77338a73da2f3cb4cf1627757a
ADD ae1b3a77338a73da2f3cb4cf16277c4c
GOT ae1b3a77338a73da2f3cb4cf16277c4c
ADD ae1b3a77338a73da2f3cb4cf16277c60
GOT ae1b3a77338a73da2f3cb4cf16277c60
ADD ae1b3a77338a73da2f3cb4cf16278a7b
GOT ae1b3a77338a73da2f3cb4cf16278a7b
ADD ae1b3a77338a73da2f3cb4cf16278da7
GOT ae1b3a77338a73da2f3cb4cf16278da7
_http_client.js:355
  if (req.res && req.res.readable) {
          ^

TypeError: Cannot read property 'res' of null
    at Socket.socketCloseListener (_http_client.js:355:11)
    at Socket.emit (events.js:180:13)
    at TCP._handle.close [as _onclose] (net.js:541:12)

Как предотвратить ошибку в первую очередь? Или какой правильный способ очистки последующего корма мне больше не нужен?

Это соответствующие версии программного обеспечения, которое я использую ...

$ pacman -Q couchdb nodejs
couchdb 2.1.1-4
nodejs 9.11.1-1
$ npm list nano
test@1.0.0 /tmp/test
└── nano@6.4.3 
...