如何用rethinkdb解决node js中的"is not a function"?
how to solve "is not a function" in node js with rethink db?
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;
我对节点 js 很陌生。有语法问题吗?我已经创建了控制器、模型和 app.js
。我的控制器包含 home.js
、index.js
、polls.js
,模型包含 db.js
和 polls.js
。我正在尝试点击
http://localhost:3000/polls
我参考了This Link
你好像忘了实例化 class :
class A{ b(){console.log("sdsd");}}
A.b(); // undefined
(new A()).b(); // ok
将module.exports替换为:
module.exports = new polls();
你应该先新建数据库对象:
var dbObject = new db();
dbObject.connectToDb(function(err,connection) {
// your code here.
}
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;
我对节点 js 很陌生。有语法问题吗?我已经创建了控制器、模型和 app.js
。我的控制器包含 home.js
、index.js
、polls.js
,模型包含 db.js
和 polls.js
。我正在尝试点击
http://localhost:3000/polls
我参考了This Link
你好像忘了实例化 class :
class A{ b(){console.log("sdsd");}}
A.b(); // undefined
(new A()).b(); // ok
将module.exports替换为:
module.exports = new polls();
你应该先新建数据库对象:
var dbObject = new db();
dbObject.connectToDb(function(err,connection) {
// your code here.
}