javascript - TypeError:dbObject.collection 不是函数
问题描述
我正在尝试从数据库中获取数据但停留在某个点。我收到此错误,但我不知道出了什么问题。我试图找到解决方案,但仍然没有得到适当的答案。我正在尝试从本教程中实现它。
这是我的代码:
//import express package
var express = require("express");
//import mongodb package
var mongodb = require("mongodb");
//MongoDB connection URL - mongodb://host:port/dbName
var dbHost = "mongodb://localhost:27017/fusion_demo";
//DB Object
var dbObject;
//get instance of MongoClient to establish connection
var MongoClient = mongodb.MongoClient;
//Connecting to the Mongodb instance.
//Make sure your mongodb daemon mongod is running on port 27017 on localhost
MongoClient.connect(dbHost, function(err, db){
if ( err ) throw err;
dbObject = db;
console.log('connect to server');
// console.log(db);
});
function getData(responseObj){
//use the find() API and pass an empty query object to retrieve all records
dbObject.collection("fuel_price").find({}).toArray(function(err, docs){
if ( err ) throw err;
var monthArray = [];
var petrolPrices = [];
var dieselPrices = [];
for ( index in docs){
var doc = docs[index];
//category array
var month = doc['month'];
//series 1 values array
var petrol = doc['petrol'];
//series 2 values array
var diesel = doc['diesel'];
monthArray.push({"label": month});
petrolPrices.push({"value" : petrol});
dieselPrices.push({"value" : diesel});
}
var dataset = [
{
"seriesname" : "Petrol Price",
"data" : petrolPrices
},
{
"seriesname" : "Diesel Price",
"data": dieselPrices
}
];
var response = {
"dataset" : dataset,
"categories" : monthArray
};
responseObj.json(response);
});
}
//create express app
var app = express();
//NPM Module to integrate Handlerbars UI template engine with Express
var exphbs = require('express-handlebars');
//Declaring Express to use Handlerbars template engine with main.handlebars as
//the default layout
app.engine('handlebars', exphbs({defaultLayout: 'main'}));
app.set('view engine', 'handlebars');
//Defining middleware to serve static files
app.use('/public', express.static('public'));
app.get("/fuelPrices", function(req, res){
getData(res);
});
app.get("/", function(req, res){
res.render("chart");
});
app.listen("3300", function(){
console.log('Server up: http://localhost:3300');
});
解决方案
dbObject 为空,因此没有收集方法。可能 Mongo DB 没有运行或运行在不同的端口。检查 MongoDB 是否正确启动并运行,您可以连接到它。
推荐阅读
- linux - 连接EC2实例的私钥
- c++ - 标头中的 const 和 constexpr 变量是否应该是 inline 以防止 ODR 违规?
- javascript - 带有 ngx-translate 库 angular 4/5 下拉菜单的 html 中的 ng 模型
- php - 在 PHP (AWS/ResulData) 中访问多维关联数组时出错
- javascript - GraphQL 查询返回错误 .filter 不是函数
- javascript - 一个盒子不适合不同的屏幕分辨率
- web-scraping - 网页抓取产品详细信息,而不是 UIPath 中的列表/表格
- c# - Bot Framework - 等待用户在瀑布对话框中点击英雄卡动作
- .net - 为什么我不能处理表单?
- reactjs - 获取“schemeCategory20”未从“d3”导出以将 D3.js V.5.7 转换为 React JS 组件