gpt4 book ai didi

javascript - mongodb : TableRow. TableRow 不是构造函数

转载 作者:行者123 更新时间:2023-11-30 19:28:57 27 4
gpt4 key购买 nike

我正在开始使用 mongodb。
我已经设置了所有的 mongodb 和 mongoose 配置,它们工作得很好。
以下是项目文件:

server.js:

const TableRow = require('./models/tableRow');
const bodyParser = require('body-parser');
const cors = require('cors')
const express = require('express');
const mongoose= require('mongoose')
const app = express();
const router = express.Router();
app.use(cors());
app.use(bodyParser.json());
mongoose.connect('mongodb://localhost/table', function(err) {
if (err) { throw err; }
console.log('Successfully connected');
});
const connection = mongoose.connection;
connection.on('error', console.error.bind(console, 'connection error:'));
connection.once('open', () => {
console.log('MongoDB database connection established successfully!');
});
app.use('/', router);
router.route('/table/add').post((req, res) => {
let tableRow = new TableRow (req.body);
tableRow.save()
.then(issue => {
res.status(200).json({'tableRow': 'Added successfully'});
})
.catch(err => {
res.status(400).send('Failed to create new record');
});
});
app.listen(5757, () => console.log(`Express server running on port 5757`));

tableRow.js

const mongoose = require('mongoose')
const Schema = mongoose.Schema;
let TableRow = new Schema({
column1Data: {
type: String
},
column2Data: {
type: String
}
});
export default mongoose.model('TableRow', TableRow);

当我尝试使用 POSTMAN 进行测试时:

enter image description here

我收到这个错误:

TypeError: TableRow is not a constructor

我认为问题在于我在 server.js 中需要模型的方式:

const TableRow = require('./models/tableRow');

其他人遇到了类似的问题并将其发布在 stackOverFlow 上。但是,他们在与服务器代码相同的文件中定义模型。

Similar issue but doesn't solve my problem

所以他的帖子没有解决我的问题。
知道我该如何解决这个问题吗?

最佳答案

改变自

export default mongoose.model('TableRow', TableRow);

为此:

module.exports = mongoose.model('TableRow', TableRow);

并且 导入 所以:const TableRow = require('./models/tableRow');

这是 CommonJS 模块规范,它是 Node.js 中用于处理模块的标准 (more info)。

在使用 Node.js 时,包括 express 框架,你应该这样做。

module.exports is the object that's actually returned as the result of a require call.(Reference)

记住:

You must use both import and export syntax from the same standard.


两个模块系统的简单总结:

如今有两个模块系统正在积极使用。 CommonJS (CJS) 是 Node.js 历史上使用的。 ESM(EcmaScript 模块)是一个较新的系统,已添加到 JavaScript 规范中。浏览器已经支持 ES 模块,Node 正在添加支持。 ( source )

关于javascript - mongodb : TableRow. TableRow 不是构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56634434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com