好的..我一直在盯着这段代码而我在代码中看不到错误。我的代码连接到数据库正常,我的控制台日志显示我的结果
{ id: 7,
name: 'Tap\'s',
quicklist: 'Y',
message: 'Welcome..enjoy one of our many craft brews!',
fbflag: 'Y',
facebookurl: 'https://www.facebook.com/TapsPourhouseMooresville',
twflag: 'Y',
twitterurl: 'https://twitter.com/TapsPourhouse',
contactflag: 'Y',
contactemail: 'info@blazingpoint.com',
eventsflag: 'Y',
loyaltyflag: 'Y',
loyaltyclub: 'TAPped In',
loyaltymessage: 'Become a member of the TAPped In Club in order to receive special offers and to stay informed on upcoming events and exclusive offers!',
locdescription: 'Table 10' }
这是我想要归还的东西,但我一直在努力 TypeError:object不是函数 参考以下评论的行。
exports.get_site_setup = function (callback) {
var dbc;
async.waterfall([
// get a connection
function (cb) {
// if (!name)
// cb(backhelp.missing_data("site name"));
// else
db.db(cb);
},
function (dbclient, cb) {
dbc = dbclient;
dbc.query("select s.ID as id, s.NAME as name, s.QUICK_LIST_ENABLED as quicklist, s.MESSAGE as message, s.FBFLAG as fbflag, "+
"s.FACEBOOKURL as facebookurl, s.TWFLAG as twflag, s.TWITTERURL as twitterurl, "+
"s.CONTACTFLAG as contactflag, s.CONTACTEMAIL as contactemail, s.EVENTSFLAG as eventsflag, "+
"s.LOYALTYFLAG as loyaltyflag, s.LOYALTYCLUB as loyaltyclub, s.LOYALTYMESSAGE as loyaltymessage, l.LOCDESC locdescription "+
"from COMPANIES as c "+
"left join SITES as s on c.ID = s.COMPANY_ID "+
"left join LOCATION as l on s.ID = l.SITE_ID "+
"where c.ID = 7 and s.ID = 7 and l.ID = 8",
cb);
}
],
function (err, results) {
if (dbc) {dbc.end();}
if (err) {
callback(err);
} else if (!results || results.length === 0) {
// callback(backhelp.no_such_site());
} else {
callback(null, results[0]); // <-- Error on this line
console.log(results[0]);
}
});
};
答案 0 :(得分:0)
如果你查看瀑布的文档,你会看到按照数组的顺序调用回调函数,并且一旦处理了数组的所有元素,就会调用最终函数(错误,结果)。
https://github.com/caolan/async#waterfall
所以在你的第一次回调中
function (cb) {
// if (!name)
// cb(backhelp.missing_data("site name"));
// else
db.db(cb);
},
当你引用db.db(cb);是调用cb(null,dbclient,cb)的函数转到数组中指定的下一个函数吗?
然后在发生dbc.query的第二个函数中,您需要确保查询调用cb(null,expected result);
null指示瀑布没有错误并继续。
此外,您的结果变量可能是字符串而不是数组。请检查一下。 如果它是一个字符串,那么这个测试就会通过(可能是你的问题。
} else if (!results || results.length === 0) {