尝试获取 json 数据,出现 "not a function" 错误
Trying to GET json data, getting "not a function" error
我正在创建一个程序员工作板应用程序,我正试图在我的主页上显示 json 数据。在某些时候我会渲染它,但现在我只是想让它以 json 形式出现,这样我就知道它有效了。
我可以连接到服务器,但是当我加载页面时出现类型错误(Job.showAllJobs 不是函数)。
我正在使用前一周制作的 crud 应用程序作为参考,但它与这个项目之间有一些差异让我失望。
这是我项目的文件结构:
job-board
database
- connection.js
- schema.sql
models
- Job.js
- User.js
views
- index.ejs
- login.ejs
server.js
与我之前的 crud 应用程序不同,这个项目使用的是一个 connection.js 文件,该文件之前出现了一些问题。起初我以为我已经脱离困境,但我认为这可能是我目前问题的原因。
没有让 GET 工作似乎是一个小错误,但它确实困扰着我,因此我无法继续工作。
我用示例列表填充了我的 table(工作)作为测试,但在不久的将来我计划将应用程序连接到 GitHub 工作 api。
server.js:
const express = require('express');
const app = express();
const PORT = 3000;
const bodyParser = require('body-parser');
const methodOverride = require('method-override');
const Job = require('./models/Job');
const User = require('./models/User');
const connection = require('./database/connection')
app.use(bodyParser.json())
app.use(methodOverride('_method'));
const urlencodedParser = bodyParser.urlencoded({ extended: false })
app.set("view engine", "ejs");
///// GET /////
// GET INDEX
app.get('/', (request, response) => {
Job.showAllJobs().then(everyJob => {
response.json('index');
// response.render('index', { jobs: everyJob });
});
});
Job.js
const Job = {};
const db = require('../database/connection');
///// JOBS /////
/// INDEX ///
Job.showAllJobs = () => {
return db.any('SELECT * FROM jobs');
};
module.exports = Job;
module.exports = db;
connection.js
// require database setup to use pg-Promise
const pgp = require('pg-promise')({});
// connection url
const connectionURL = "postgres://localhost:5432/job_board";
// new database connection
const db = pgp(connectionURL);
// module.exports = db;
你这里有几个问题。
- 确保将作业传递到
res.json
而不是字符串 'index'
- 确保从
connection.js
导出 db
- 您正在从
Job.js
导出 Job
和 db
。由于您要导出 db
秒,因此它会覆盖 Job
. 的导出
我正在创建一个程序员工作板应用程序,我正试图在我的主页上显示 json 数据。在某些时候我会渲染它,但现在我只是想让它以 json 形式出现,这样我就知道它有效了。
我可以连接到服务器,但是当我加载页面时出现类型错误(Job.showAllJobs 不是函数)。
我正在使用前一周制作的 crud 应用程序作为参考,但它与这个项目之间有一些差异让我失望。
这是我项目的文件结构:
job-board
database
- connection.js
- schema.sql
models
- Job.js
- User.js
views
- index.ejs
- login.ejs
server.js
与我之前的 crud 应用程序不同,这个项目使用的是一个 connection.js 文件,该文件之前出现了一些问题。起初我以为我已经脱离困境,但我认为这可能是我目前问题的原因。
没有让 GET 工作似乎是一个小错误,但它确实困扰着我,因此我无法继续工作。
我用示例列表填充了我的 table(工作)作为测试,但在不久的将来我计划将应用程序连接到 GitHub 工作 api。
server.js:
const express = require('express');
const app = express();
const PORT = 3000;
const bodyParser = require('body-parser');
const methodOverride = require('method-override');
const Job = require('./models/Job');
const User = require('./models/User');
const connection = require('./database/connection')
app.use(bodyParser.json())
app.use(methodOverride('_method'));
const urlencodedParser = bodyParser.urlencoded({ extended: false })
app.set("view engine", "ejs");
///// GET /////
// GET INDEX
app.get('/', (request, response) => {
Job.showAllJobs().then(everyJob => {
response.json('index');
// response.render('index', { jobs: everyJob });
});
});
Job.js
const Job = {};
const db = require('../database/connection');
///// JOBS /////
/// INDEX ///
Job.showAllJobs = () => {
return db.any('SELECT * FROM jobs');
};
module.exports = Job;
module.exports = db;
connection.js
// require database setup to use pg-Promise
const pgp = require('pg-promise')({});
// connection url
const connectionURL = "postgres://localhost:5432/job_board";
// new database connection
const db = pgp(connectionURL);
// module.exports = db;
你这里有几个问题。
- 确保将作业传递到
res.json
而不是字符串 'index' - 确保从
connection.js
导出 - 您正在从
Job.js
导出Job
和db
。由于您要导出db
秒,因此它会覆盖Job
. 的导出
db