Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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 findByID返回未定义_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript mongoose findByID返回未定义

Javascript mongoose findByID返回未定义,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,当尝试使用findById记录数据库中的数据时,我得到一个返回值undefined // Get single article app.get('/article/:id', (req, res) => { Article.findById(req.params.id, (err, article) => { console.log(article); return; }); }); //Article Schema let articleSchema =

当尝试使用
findById
记录数据库中的数据时,我得到一个返回值
undefined

// Get single article
app.get('/article/:id', (req, res) => {
  Article.findById(req.params.id, (err, article) => {
    console.log(article);
    return;
  });
});


//Article Schema
let articleSchema = mongoose.Schema({
    title: { type: String, required: true }, 
    author: { type: String, required: true},
    body: { type: String, required: true}
});

let Article = module.exports = mongoose.model('Article', articleSchema)
我查了一些东西,然后让它工作了,但我不确定这是不是正确的方法

所以我发现,如果我使用
findOne()
并传入
Article.id
我会得到我想要的结果,但这是正确的做法吗

我觉得
article.id
应该通过
req.params.id
传递,但是当我将它传递到
findOne()
时,我会收到一个错误,说:

Error: Invalid argument to findOne(): 'article_id'
使用
Article.findById(mongoose.Types.ObjectId(req.params.id)},(err,Article).


因为您正在查找对象id而不是字符串。

我遇到了它。我解决了这个问题

const UserModel = require('../models/userModel')

exports.getUser  =  async(req, res) => {

const  _id  =  req.params.id

try {

const  user  =  await  UserModel.findById(_id)

if (!user) {

return  res.status(404).send()

}

res.status(201).send(user)



} catch (error) 
{

res.status(500).send(error)    

}    
}
管制员/路线

router.get('/user/:id',userController.getUser)

型号

const  mongoose  =  require('mongoose')    
const  validator  =  require('validator')   


const  User  =  mongoose.model('User', {

name: {

type:  String,

required:  true,

trim:  true

},

email: {

type:  String,

required:  true,

trim:  true,

lowercase:  true,

validate(value) {

if (!validator.isEmail(value)) {

throw  new  Error('Email is invalid')

}    
}    
},    
password: {

type:  String,

required:  true,

minlength:  7,

trim:  true,

validate(value) {    
if (value.toLowerCase().includes('password')) {    
throw  new  Error('Password cannot contain "password"')    
}    
}    
},age: {    
type:  Number,    
default:  0,    
validate(value) {    
if (value  <  0) {    
throw  new  Error('Age must be a postive number')    
}    
}    
}    
})       

module.exports  =  User
const mongoose=require('mongoose'))
const validator=require('validator')
const User=mongoose.model('User'{
姓名:{
类型:字符串,
要求:正确,
修剪:对
},
电邮:{
类型:字符串,
要求:正确,
特里姆:没错,
小写:true,
验证(值){
如果(!validator.isEmail(值)){
抛出新错误('电子邮件无效')
}    
}    
},    
密码:{
类型:字符串,
要求:正确,
最小长度:7,
特里姆:没错,
验证(值){
if(value.toLowerCase().includes('password')){
抛出新错误('密码不能包含“Password”')
}    
}    
},年龄:{
类型:数字,
默认值:0,
验证(值){
如果(值<0){
抛出新错误('年龄必须是正数')
}    
}    
}    
})       
module.exports=用户

您是否在发送给/article/:ID的链接上从数据库中提取了正确的ID。我遇到了相同的问题,正如我之前在基本数组索引上学到的,并转移到了MongoDB。我只需要更新一个字符,以包含“\u ID”而不是“ID”的MongoDB语法的下划线

适用于我的HTML呈现页面的正确代码如下所示:

<a href={`/article/${article._id}`}>
<a href={`/article/${article.id}`}>

我从以下内容开始并给出了一个未定义的结果:

<a href={`/article/${article._id}`}>
<a href={`/article/${article.id}`}>


尝试注销
err
参数这是我得到的:CastError:Cast to ObjectId在路径“\u id”处的值“article\u id”失败,在模型“article”中当前遇到的错误是,当我尝试记录一个article值时,我得到一个未定义的值,错误为:
消息:“Cast to ObjectId在路径“\u id”处的值“article\u id”失败“对于模型“Article”
我确实遇到了一个错误命名参数的问题,但是已经解决了,我可以使用
articles.find()让它显示文章
但是,当尝试使用
Article.findById时,出现了一些问题。这是在索引html中犯的错误。我在传递参数时出错,并将其作为字符串传递,这就是它无法读取id的原因。我在检查索引文件时发现了这个问题。接下来,我这样做了,并得到了以下结果:
错误:传入的参数必须是一个12字节的字符串或一个24个十六进制字符的字符串
,所以我去检查了数据库,因为我怀疑可能没有为id存储值,这就是为什么它不会显示它的原因,但当我检查id时,它就在那里,所以我又回到了原点,可能是
req.params.i吗d
不存在?我可以记录
req.params.id
并返回正确的值OK my bad我发现我加载了错误的参数,这就是它找不到id的原因,我给了它
article\u id
的参数,它应该是
article.\u id
以便我可以使用
article.find
获得值,但当我找不到时ried使用
Article.findById
我又得到了一个未定义的值O.O“当回答一篇旧帖子时,如果你能为你的答案提供一些上下文而不仅仅是代码,这将是很有帮助的,因为这可能会使它对其他人更有用。