mongoose findByID返回undefined

时间:2017-08-27 16:06:43

标签: 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 = 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'

4 个答案:

答案 0 :(得分:0)

使用$(".some_selector").click(function () { $("table.your_class").append("<tr> <td>col1</td> <td>col2</td> </tr>"); });

当你在寻找对象id而不是String时。

答案 1 :(得分:0)

我面对了,我解决了。

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)

答案 2 :(得分:0)

模型

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

答案 3 :(得分:0)

您是在从您的数据库中提取正确的ID,该链接是否会将您发送到/ article /:id 。我遇到了同样的问题,就像我以前在基本数组索引上学到的那样,然后转移到了MongoDB。我只需要更新一个字符,以包括MongoDB语法“ _id”而不是“ id”的下划线即可。

在我的HTML呈现页面上适合我的正确代码如下:

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

我从以下开始并给了我未定义的结果:

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