TypeError:Task.find 不是 Node Js 中的函数

Posted

技术标签:

【中文标题】TypeError:Task.find 不是 Node Js 中的函数【英文标题】:TypeError: Task.find is not a function in Node Js 【发布时间】:2021-01-08 03:31:18 【问题描述】:

我的模型有问题。我已连接到 MongoDB,并且我的服务器运行良好。 但是我无法通过 TaskController 路由。错误是由于模型还是 find() 函数。 我不知道如何解决它。 谁能帮帮我吗。 谢谢

tasks.js

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

// const TaskModel=mongoose.model("taskslist");

// const Task=mongoose.model('Task');

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


router.get('/',(req,res)=>

   Task.find(,(err,docs)=>
       if(!err)
           res.render("tasks",
           );
       
    else
        console.log('Failed to retrieve the Course List: '+ err);

    
   );

);

module.exports=router;

app.js

const TasksController=require('./controller/tasks');

app.use(bodyParser.urlencoded(
    extended:true
));

app.get('/',(req,res)=>
    res.render('index',);
);

app.use(bodyParser.json());


app.set('views',path.join(__dirname,"/views/"));
app.set("view engine","hbs");
app.engine("hbs",expressHandleBars(
    extname:"hbs",
    defaultLayout:"mainlayout",
    layoutsDir:__dirname+"/views/layouts"
));

app.listen(3000,()=>
    console.log("server listening");
);

app.use("/tasks",TasksController);

task.mode.js

const mongoose=require('mongoose');

var taskSchema=new mongoose.Schema(

title:
    type:String,

,
isDone:

    type:Boolean,


);

module.exports=mongoose.model("Task",taskSchema);

【问题讨论】:

task.mode.js这是错字吗? 检查您导入的 task.model 是否与您的 task.model 文件名相同,这可能是错误的原因,因为您已将名称 task.mode.js 命名为文件并导入了 task.model 您确定在模型上运行查找查询吗?如果您正在导出架构,并且在架构上运行 find 不会暴露 find 功能。 这是一个拼写错误,但我给出了正确的名称。 那么如何从mongodb中取回数据??不使用find 【参考方案1】:

你错过了 mongoose.conect(db) 你可以试试这样的 -

         let taskjs=require('./task.js')
         let express=require('express');
         let mongoose=require('mongoose');
         let app;
         let db;
         let http
        let taskSchema
        let isDoneSchema
         port=process.env.PORT || 3000;
         http = require('http').createServer(app);
         http.listen(port);
         db="mongodb://localhost:27017/YourCollection";
         mongoose.connect(db);//you missed this one
         Schema=mongoose.Schema;
         
         titleSchema=new Schema(
         type:String 
         )
          
         isDoneSchema=new Schema(
         type:Boolean
         );
        task= mogoose.model("Task",titleSchema);
        isDone=mogoose.model("IsDone",isDoneSchema);
        taskjs(app,task,isDone)
        
        
        //and now in task.js
        
        module.exports=(app,task,isDone)=>
        app.use(bodyParser.urlencoded(
    extended:true
));

app.get('/',(req,res)=>
    res.render('index',);
);

app.use(bodyParser.json());


app.set('views',path.join(__dirname,"/views/"));
app.set("view engine","hbs");
app.engine("hbs",expressHandleBars(
    extname:"hbs",
    defaultLayout:"mainlayout",
    layoutsDir:__dirname+"/views/layouts"
    
));

/////
///now you can access the mongoDB on any route //////
app.get('/',(req,res)=>

   Task.find(,(err,docs)=>
       if(!err)
           res.render("tasks",
           );
       
    else
        console.log('Failed to retrieve the Course List: '+ err);

    
   );

);

        
        

【讨论】:

以上是关于TypeError:Task.find 不是 Node Js 中的函数的主要内容,如果未能解决你的问题,请参考以下文章

弹性搜索 | TypeError:字符串索引必须是整数

2.在使用"node-xlsx" 模块时报" TypeError: Object function Object() { [native code] } has no m

Python中错误之 TypeError: object() takes no parametersTypeError: this constructor takes no arguments(示例

Python-TypeError: object() takes no parameters

报错处理——TypeError: Dog() takes no arguments

解决:TypeError: object() takes no parameters