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 中的函数的主要内容,如果未能解决你的问题,请参考以下文章
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