簡體   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