首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongodb : TableRow.TableRow不是构造函数

mongodb : TableRow.TableRow不是构造函数
EN

Stack Overflow用户
提问于 2019-06-17 15:28:07
回答 1查看 39关注 0票数 1

我要从mongodb开始了。

我已经设置了所有的mongodb和猫鼬的配置,它们完美地工作。

以下是项目文件:

server.js:

代码语言:javascript
复制
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

代码语言:javascript
复制
const mongoose = require('mongoose')
const Schema = mongoose.Schema;
let TableRow = new Schema({
    column1Data: {
        type: String
    },
    column2Data: {
        type: String
    }
});
export default mongoose.model('TableRow', TableRow);

当我试着用邮递员测试这个时:

我知道这个错误:

TypeError: TableRow不是构造函数

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

代码语言:javascript
复制
const TableRow = require('./models/tableRow');

其他人也面临着类似的问题,并将其发布在stackOverFlow上。但是,他们在服务器代码的同一个文件中定义模型。

类似的问题但不能解决我的问题

所以他的帖子不能解决我的问题。

知道我怎么能解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-17 16:31:27

变出

代码语言:javascript
复制
export default mongoose.model('TableRow', TableRow);

对此:

代码语言:javascript
复制
module.exports = mongoose.model('TableRow', TableRow);

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

这是CommonJS模块规范,这是Node.js中用于处理模块(更多信息)的标准。

在使用Node.js (包括快捷框架)时,您应该这样做。

module.exports是实际作为请求调用的结果返回的对象。(参考文献)

请记住:

必须同时使用来自相同标准的导入和导出语法。

两个模块系统的简要概述:

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56634434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档