繁体   English   中英

Mongoose TypeError:无法读取undefined的属性'googleID'

[英]Mongoose TypeError: Cannot read property 'googleID' of undefined

我正在制作适用于个人用户的待办事项应用程序。 我可以在没有用户ID的情况下将数据粘贴到数据库中,但是当我尝试将google id添加到模式和数据库时,会抛出类型错误。 我的猫鼬Schema的东西似乎被打破了

TodoController.js

 var bodyParser = require("body-parser"); var mongoose = require("mongoose"); const keys = require("../configs/keys"); const Todo = require("../models/todo-model") //Connect to the database mongoose.connect(keys.mongodb.tododbURL,() => { console.log("connected to mongodb server"); }); //var data = [{item:"get milk"}, {item:"walk nan"}, {item:"code for a bit"}]; var urlencodedParser = bodyParser.urlencoded({ extended: true }); const authCheck = (req, res, next) =>{ if(!req.user){ //executed if user isn't logged in res.redirect("/"); } else { //if logged in next(); // fires to the next functionS } }; module.exports = function(app){ app.get("/todo", authCheck, function(req, res){ //Get data from mongoDB andd pass through view Todo.find({}, function(err, data){ if (err) throw err; res.render("todo", {todos:data}); }); console.log(req.user.googleID) }); app.post("/todo", urlencodedParser,function(req, res){ //get data from view and put it in the database var newTodo = Todo({item: req.body, googleID: req.user.googleID}).save(function(err, data){ if (err) throw err; res.json(data); }) }); app.delete("/todo/:item", function(req, res){ // delete requested item from the database Todo.find({item: req.params.item.replace(/\\-/g, " ")}).remove(function(err, data){ if(err) throw err; res.json(data); }); }); }; 
req.user.googleID将返回诸如1374979743之类的内容

待办事项,model.js

 const mongoose = require("mongoose"); const todoSchema = new mongoose.Schema({ todo: String, googleID: String }); const Todo = mongoose.model("Todo", todoSchema); module.exports = Todo; 

 istening on port 3000 (node:2656) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect. connected to mongodb server connected to mongodb server TypeError: Cannot read property 'googleID' of undefined 

如果user是您在请求的正文中发送到API的内容(我之所以这样做是因为我没有在您的代码段中看到passportjs的使用),那么您会收到此错误,因为您使用的是req.user.googleID而不是req.body.user.googleID bodyParser从您的HTTP请求的正文中解析JSON并将其放在req.body下。

发现问题,我正在调用req.body而不是req.body.item。 我不得不调用项目因为我现在正在将两个项目推送到数据库它现在可以工作但我意识到我的CS类中途使用一个数据库

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM