Node.js 猫鼬';查找';使用条件参数查询时返回空数组
我收集了一些tweet,需要获取特定用户的tweet。我使用mongoose“Find”查询来查找推文。我从req.params获取用户_id并将其用作条件参数,但mongodb返回一个空数组Node.js 猫鼬';查找';使用条件参数查询时返回空数组,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我收集了一些tweet,需要获取特定用户的tweet。我使用mongoose“Find”查询来查找推文。我从req.params获取用户_id并将其用作条件参数,但mongodb返回一个空数组 我尝试过使用console.log进行调试,用户id似乎是正确的。“user_id”的类型是预期的字符串,我似乎找不到返回空数组的原因,即使我的集合中有匹配的条目 此外,当我使用其他条件参数(除了user)时,条目的获取没有问题 app.get('/search/:id',(req,res) =>
我尝试过使用console.log进行调试,用户id似乎是正确的。“user_id”的类型是预期的字符串,我似乎找不到返回空数组的原因,即使我的集合中有匹配的条目 此外,当我使用其他条件参数(除了user)时,条目的获取没有问题
app.get('/search/:id',(req,res) => {
var _id = req.params.id;
if(!users.includes(_id)){
res.status(400)
res.send('Sorry... User not present in the list')
}
else{
Tweet.find({user: _id}).then((tweets)=>{
res.status(200).send(tweets)
}).catch((e) =>{
res.status(500).send();
})
}
})
我的猫鼬模式:
const Tweet=mongoose.model('Tweet'{
用户:{
类型:字符串,
修剪:对
},
正文:{
类型:字符串,
要求:正确,
修剪:对
},
核实:{
类型:布尔型
}
})
“我已尝试使用console.log调试,用户id似乎是正确的。“用户id”的类型是预期的字符串,我似乎找不到返回空数组的原因,即使我的集合中有匹配的项。”
根据您的此语句,您搜索的“user\u id”是文档,但您不能在mongoose模式中定义user\u id
const Tweet = mongoose.model('Tweet',{
user:{
type: String,
trim:true
},
text:{
type: String,
required: true,
trim:true
},
verified:{
type: Boolean
}
})
使用用户而不是id
app.get('/search/:user',(req,res) => {
var user = req.params.user;
if(!users.includes(user)){
res.status(400)
res.send('Sorry... User not present in the list')
}
else{
Tweet.find({user: user}).then((tweets)=>{
res.status(200).send(tweets)
}).catch((e) =>{
res.status(500).send();
})
}
})
findById()将只返回1个文档,就像findOne()一样。我需要所有的文档都有user:req.params.id。我想你需要一个文档,所以我建议使用findById()方法如果你需要所有的文档使用,那么使用find()方法另一个问题是你在你的模式中定义了user\u id,mongo在你向文档插入数据时自动插入unique\u id。正如我提到的,我需要获取特定用户的tweets。我在这里的查询是,条件参数({user:_id})在这里似乎不起作用,并返回一个空数组。理想情况下,它应该返回一个包含所有文档的数组,其中user:\u id.Code看起来不错。您能否提供一个您希望找到的示例id值和Tweet文档?文档在tweets集合中,对吗?是的。我收集了一些“推特”。示例文档:
{“\u id”:“5d0129be839e1711ca1b6d04”,“用户”:“jimmyfallon\”,“文本”:“\”可能必须同时做这两件事!!!\”,“verified”:true}
我将id作为“用户”传递,以便返回与用户对应的所有tweet。看起来您的问题是嵌入了“
匹配字符串中的字符。它应该看起来像“user”:“jimmyfallon”
。是的,这似乎就是问题所在。我已将“”添加到搜索查询中,它工作正常。谢谢有一件事仍然困扰着我,那就是mongodb的行为。我的“user”参数的类型为String,mongodb正在将“”添加到我的输入内容中。这是正常的mongodb/猫鼬行为吗?mongodb不会添加这些“”,它们必须来自其他地方