【问题标题】:TypeError: Task.find is not a function in Node JsTypeError:Task.find 不是 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

标签: javascript node.js mongodb mongoose mean-stack


【解决方案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);

    }
   });

});

        }
        

【讨论】:

    猜你喜欢
    • 2022-01-25
    • 2018-02-17
    • 1970-01-01
    • 2018-07-03
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多