【问题标题】:node.js - TypeError: db.model is not a functionnode.js - 类型错误:db.model 不是函数
【发布时间】:2023-03-23 08:50:02
【问题描述】:

node 和 mongodb 的新手 我正在开发一个 linux Centos 7 环境。 出于某种原因,我收到此错误“TypeError: db.model is not a function”

这个错误是什么意思?

    /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;

【问题讨论】:

  • 无论require('../libs/db-connection')()返回什么,它都没有函数model
  • 你想使用来自mongoosemodel函数??
  • 是的,我想使用猫鼬的模型

标签: node.js mongodb mongoose


【解决方案1】:

除非您的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

【讨论】:

  • 谢谢,错误消失了,但我收到“页面无法正常工作错误”这是什么原因?这就是任务文件的样子。在函数内部仍然是合法的吗?与数据库的连接呢?我应该把它放在哪里? module.exports = function(){ var mongoose = require('mongoose'); var Task = mongoose.Schema({ title: String, description: String, status: Boolean }); return mongoose.model('tasks',Task); }
  • 这看起来像是另一个错误,我的建议是接受我的回答并发布另一个问题,并附上错误的完整描述和更新/相关的代码,以便我和其他人可以帮助您。
猜你喜欢
  • 2015-11-05
  • 2019-02-05
  • 2018-09-29
  • 1970-01-01
  • 2023-02-01
  • 2016-02-26
  • 2013-04-01
  • 2016-03-06
相关资源
最近更新 更多