как решить проблему «не является функцией» в узле js с помощью rethink db?

#node.js #rethinkdb

#node.js #rethinkdb

Вопрос:

 TypeError: pollObject.addNewPolls is not a function
    at /home/imerit/iReNO/controllers/polls.js:23:16
    at Layer.handle [as handle_request] (/home/imerit/iReNO/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/imerit/iReNO/node_modules/express/lib/router/route.js:131:13)
    at next (/home/imerit/iReNO/node_modules/express/lib/router/route.js:125:14)
    at Route.dispatch (/home/imerit/iReNO/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/home/imerit/iReNO/node_modules/express/lib/router/layer.js:95:5)
    at /home/imerit/iReNO/node_modules/express/lib/router/index.js:277:22
    at Function.process_params (/home/imerit/iReNO/node_modules/express/lib/router/index.js:330:12)
    at next (/home/imerit/iReNO/node_modules/express/lib/router/index.js:271:10)
    at Function.handle (/home/imerit/iReNO/node_modules/express/lib/router/index.js:176:3)
    at router (/home/imerit/iReNO/node_modules/express/lib/router/index.js:46:12)
    at Layer.handle [as handle_request] (/home/imerit/iReNO/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/home/imerit/iReNO/node_modules/express/lib/router/index.js:312:13)
    at /home/imerit/iReNO/node_modules/express/lib/router/index.js:280:7
    at Function.process_params (/home/imerit/iReNO/node_modules/express/lib/router/index.js:330:12)
    at next (/home/imerit/iReNO/node_modules/express/lib/router/index.js:271:10)
 

Это ошибка, которую я получаю при попытке вызвать URL-адрес.
polls.js код приведен ниже.

 "use strict";
var rethinkdb = require('rethinkdb');
var db = require('./db');
var async = require('async');

class polls {
  addNewPolls(pollData,callback) {
    async.waterfall([
      function(callback) {
        db.connectToDb(function(err,connection) {
          if(err) {
            return callback(true,"Error connecting to database");
          }
          callback(null,connection);
        });
      },
      function(connection,callback) {
        rethinkdb.table('poll').insert({
            "question" : pollData.question,
            "polls" : pollData.polls
        }).run(connection,function(err,result) {
          connection.close();
          if(err) {
            return callback(true,"Error happens while adding new polls");
          }
          callback(null,result);
        });
      }
    ],function(err,data) {
      callback(err === null ? false : true,data);
    });
  }
}

module.exports = polls;
 

Я очень новичок в node js. есть ли какие-либо проблемы с синтаксисом? Я создал контроллер, модель и app.js . Мой контроллер содержит home.js , index.js , polls.js а модели содержат db.js и polls.js . Я пытаюсь ударить

 http://localhost:3000/polls
 

Я использовал эту ссылку в качестве ссылки

Ответ №1:

сначала вы должны создать новый объект базы данных:

 var dbObject = new db();
  dbObject.connectToDb(function(err,connection) {
  // your code here.
}
 

Ответ №2:

кажется, вы забыли создать экземпляр класса :

 class A{ b(){console.log("sdsd");}}
A.b(); // undefined
(new A()).b(); // ok
 

Заменить модуль.экспорт на :

 module.exports = new polls();
 

Комментарии:

1. теперь я получаю «TypeError: pollModel не является конструктором» после замены «module.exports = polls;» на «module.exports = new polls();»