TypeError: невозможно создать свойство 'next' в строке 'aapl' - PullRequest
0 голосов
/ 09 июля 2020

Сейчас я использую NodeJs. Я использовал пакет client-ouath2 для аутентификации рабочего процесса Oauth2.0. После аутентификации он перенаправляет на /callback URL. При обратном вызове пакет client-oauth2 извлекает токен. Отсюда я вызвал функцию для запуска Twitter Stream.

Twitter.stream("statuses/filter", parameters)
.on("start", (response) => console.log("start"))
.on("data", async (tweet) => {
  // Save into DB
  const newTweet = {
    text: tweet.text,
    created_at: Date.now(),
  };
  let tweetModel = new Tweet(newTweet);
  await tweetModel
    .save()
    .then(() => {
      console.log("Tweet saved into DB");
    })
    .catch((err) => {
      console.log(`Can't save into MongoDB because : ${err}`);
    });
  getStock(); // After Saving use Tweet to further process the Tweet. Retrieve from DB
})
.on("ping", () => console.log("ping"))
.on("error", (error) => console.log("error", error))
.on("end", (response) => console.log("end"));
};

в функции getStock () я выполняю манипуляции со строкой, чтобы удалить $ из твита и получить только первый экземпляр.

getStock = async () => {
  await Tweet.findOne({}, {}, { sort: { created_at: -1 } }, function (
    err,
    post
  ) {
    if (err) {
      console.log("Cant find tweet " + err);
    }
    if (post) {
      console.log(post);
      console.log(`Tweet is ${post.text}`);
      let splitted = post.text.split("$");
      let final = splitted[1].replace(/[^a-zA-Z]+/g, "$");
      let fin = final.replace(/[^a-zA-Z]+/g, " ");
      if (fin.substr(0, fin.indexOf(" "))) {
        fin = fin.substr(0, fin.indexOf(" "));
      }

      //Market Order
      console.log("Executing Market Order for " + fin);
      marketOrder(fin); // Pass the symbol further to execute an Order.
    }
  });
};

При выполнении функции marketOrder () возникает следующая ошибка.

    Executing Market Order for aapl
events.js:187
      throw er; // Unhandled 'error' event
      ^

TypeError: Cannot create property 'next' on string 'aapl'
    at Function.handle (C:\JavaScript\Form\node_modules\express\lib\router\index.js:160:12)
    at router (C:\JavaScript\Form\node_modules\express\lib\router\index.js:47:12)
    at C:\JavaScript\Form\methods\getStock.js:24:7
    at C:\JavaScript\Form\node_modules\mongoose\lib\model.js:4891:16
    at C:\JavaScript\Form\node_modules\mongoose\lib\model.js:4891:16
    at C:\JavaScript\Form\node_modules\mongoose\lib\helpers\promiseOrCallback.js:24:16
    at C:\JavaScript\Form\node_modules\mongoose\lib\model.js:4891:16
    at C:\JavaScript\Form\node_modules\mongoose\lib\helpers\promiseOrCallback.js:24:16
    at C:\JavaScript\Form\node_modules\mongoose\lib\model.js:4914:21
    at C:\JavaScript\Form\node_modules\mongoose\lib\query.js:4390:11
    at C:\JavaScript\Form\node_modules\kareem\index.js:135:16
    at processTicksAndRejections (internal/process/task_queues.js:75:11)
Emitted 'error' event on Function instance at:
    at C:\JavaScript\Form\node_modules\mongoose\lib\model.js:4893:13
    at C:\JavaScript\Form\node_modules\mongoose\lib\helpers\promiseOrCallback.js:24:16
    [... lines matching original stack trace ...]
    at processTicksAndRejections (internal/process/task_queues.js:75:11)

Я изо всех сил старался найти решение для этого, но не могу найти причину ... Я бы признателен, если кто-нибудь может помочь ...

1 Ответ

0 голосов
/ 10 июля 2020

Вместо экспорта marketOrder () я экспортировал маршрутизатор express.
До

module.exports = router

и исправлено путем экспорта моей функции

module.exports = marketOrder

маршрутизатор находил соответствующий метод маршрута, поэтому он выдал мне эту ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...