您的位置:首页 > 数据库

nodejs+express的mongoose连接数据库表名自动加s

2018-01-04 20:38 721 查看
数据库自动加s进而导致访问不到数据库

项目文件结构如下

modules
--topic.js


topic.js文件中,代码如下

const mongoose=require("mongoose");
const Schema=mongoose.Schema;
const topicSchema=new Schema({
title: { type: String },
content: { type: String },
author_id: { type: 'ObjectId' },
});
const Topic = mongoose.model('Topic', topicSchema);

export default Topic


在index.js文件中,代码如下

const express = require('express');
const router = express.Router();
const mongoose=require('mongoose');
const models=require('../models/topic');
require('express-mongoose');
const registeredUser=models.registeredUser;
mongoose.connect('mongodb://localhost:27017/myappdb');

router.get('/',function(req,res)
{
res.send(registeredUser.find());
})
module.exports = router;


在mongoDB中生成的表名为topics,自动加了s



意外发现虽然看起来连到了数据库(网页未报错),但是就是不能显示读到的数据。

最后发现是topic.js文件中使用mongoose.model()的参数不对

查询mongoose 的api如下



mongoose API collection名称应该为第三个参数,若为缺省,会自动根据参数name的值以复数形式生成collection

所以应该改成

const Topic = mongoose.model('Topic', topicSchema, 'Topic');

export default Topic


修改后的数据表名就正确了

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: