node.js - TypeError : db. 模型不是函数

标签 node.js mongodb mongoose

Node 和 mongodb 新手 我正在 Linux Centos 7 环境上工作。 由于某种原因,我收到此错误“TypeError:db.model 不是函数”

这个错误是什么意思?

    /var/www/html/mongo/crud/src/model/task.js:11
    return db.model('tasks',Task);
              ^

TypeError: db.model is not a function
    at module.exports (/var/www/html/mongo/crud/src/model/task.js:11:15)
    at Object.<anonymous> (/var/www/html/mongo/crud/src/routes/index.js:4:39)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/var/www/html/mongo/crud/src/app.js:9:21)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
[nodemon] app crashed - waiting for file changes before starting...

这是task.js文件的内容:

module.exports = function(){

    var db = require('../libs/db-connection')();
    var Schema = require('mongoose').Schema;

    var Task = Schema({
        title: String,
        description: String,
        status: Boolean
    });
    return db.model('tasks',Task);
}

这是index.js文件的内容:

const express = require('express');
const router = express.Router();

const model = require('../model/task')();

router.get('/' ,(req, res) => {
    model.find({}, (err, tasks) =>{
        if (err) throw err;
        res.render('index', {
            title: 'CRUD',
            task: tasks
        });
    });
});

module.exports = router;

最佳答案

除非您的 libs/db-connection 中有 model 函数,否则我认为您希望使用 mongoose 中的 model

如果这是正确的,要解决您的问题,您需要更改 mongoose 的导入,如下所示:

var mongoose = require('mongoose');  // Not require('mongoose').Schema (because you need schema and model)

var Task = mongoose.Schema({  // Call Schema from mongoose
    title: String,
    description: String,
    status: Boolean
});

return mongoose.model('tasks',Task);  // Call model from mongoose

关于node.js - TypeError : db. 模型不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48564019/

相关文章:

javascript - Cron 和 nightjs

javascript - 获取 redis 列表中特定字符串的索引?

java - 是否有适用于 MongoDB 的 DbUnit 替代方案?

mongodb - 在 Worker 的帮助下从 Spark 读取巨大的 MongoDB 集合

node.js - 在模块中注入(inject)唯一的 Mongoose 实例

node.js - 从 NodeJS 服务器下载多个文件

node.js - 使用 Angular、express 和 multer 发布图像和文本

mongodb - 在 MongoDB 中存储面向列的表以实现最佳数据查询的最佳方式是什么

node.js - 如何对 Mongoose 模型进行单元测试?

javascript - 如何在 JavaScript Azure Functions 中共享代码?