Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongoose TypeError:无法读取属性';谷歌ID';未定义的_Javascript_Node.js_Mongoose_Schema - Fatal编程技术网

Javascript Mongoose TypeError:无法读取属性';谷歌ID';未定义的

Javascript Mongoose TypeError:无法读取属性';谷歌ID';未定义的,javascript,node.js,mongoose,schema,Javascript,Node.js,Mongoose,Schema,我正在制作一个面向个人用户的待办应用程序。我可以在没有用户ID的情况下将数据粘贴到数据库中,但是当我尝试将google ID添加到模式和数据库中时,会抛出一个类型错误。我的猫鼬模式似乎有问题 TodoController.js var-bodyParser=require(“主体解析器”); var mongoose=要求(“mongoose”); const keys=require(“../configs/keys”); const Todo=require(“../models/Todo

我正在制作一个面向个人用户的待办应用程序。我可以在没有用户ID的情况下将数据粘贴到数据库中,但是当我尝试将google ID添加到模式和数据库中时,会抛出一个类型错误。我的猫鼬模式似乎有问题

TodoController.js
var-bodyParser=require(“主体解析器”);
var mongoose=要求(“mongoose”);
const keys=require(“../configs/keys”);
const Todo=require(“../models/Todo model”)
//连接到数据库
mongoose.connect(key.mongodb.tododbURL,()=>{
log(“连接到mongodb服务器”);
});
//var data=[{item:“get milk”},{item:“walk nan”},{item:“code for bit”}];
var urlencodedParser=bodyParser.urlencoded({extended:true});
const authCheck=(请求、恢复、下一步)=>{
如果(!请求用户){
//如果用户未登录,则执行
res.redirect(“/”);
}否则{
//如果登录
next();//激发到下一个函数
}
};
module.exports=函数(应用程序){
app.get(“/todo”、authCheck、函数(req、res){
//从mongoDB和D直通视图获取数据
Todo.find({},函数(err,data){
如果(错误)抛出错误;
res.render(“todo”,{todos:data});
});
console.log(req.user.googleID)
});
app.post(“/todo”,urlencodedParser,函数(req,res){
//从视图中获取数据并将其放入数据库中
var newTodo=Todo({item:req.body,googleID:req.user.googleID}).save(函数(err,数据){
如果(错误)抛出错误;
res.json(数据);
})
});
app.delete(“/todo/:item”),函数(req,res){
//从数据库中删除请求的项
Todo.find({item:req.params.item.replace(/\-/g,“”)}).remove(函数(err,数据){
如果(错误)抛出错误;
res.json(数据);
});
});

};如果
用户
是您发送到请求体内的API的东西(我做出这个结论是因为我没有在代码片段中看到
passportjs
的用法),那么您收到这个错误是因为您使用了
req.user.googleID
而不是
req.body.user.googleID
bodyParser
解析HTTP请求正文中的JSON,并将其置于
req.body
下发现问题,我调用的是req.body,而不是req.body.item。我必须调用item,因为我现在正在将两个项目推送到数据库中,但它现在可以工作了,我在CS课程的中途意识到使用一个数据库

你能澄清一下确切的错误是什么以及在哪里遇到的吗?很抱歉,没有说得足够具体,我尝试发送到数据库的数据无法工作。当我尝试将数据从网站发送到数据库时,会触发此错误。在端口3000(节点:2656)上侦听时抛出的错误如下所示
。弃用警告:当前URL字符串解析器已弃用,将在将来的版本中删除。要使用新的解析器,请将选项{useNewUrlParser:true}传递给MongoClient.connect。已连接到mongodb服务器已连接到mongodb服务器类型错误:无法读取未定义的属性“googleID”
最后一部分是错误的,应该是req.body.googleID还是req.body.user.googleID???@xan_z re.user.googleID来自passport sessionconsole.log您的req.body,并查看您的帖子中是否确实有此内容request.Hi,我尝试添加了
req.body.user.googleID
,但是它似乎抛出了相同的错误,而且我将只从文本框的一个客户端发布,因此只发送项目数据,可能是body解析器本身有问题