【发布时间】:2019-10-27 06:13:52
【问题描述】:
我收集了一些推文,我需要获取特定用户的推文。我正在使用猫鼬“查找”查询来查找推文。我从 req.params 获取 user_id 并将其用作条件参数,但 mongodb 返回一个空数组。
我已经尝试使用 console.log 进行调试,并且 user_id 似乎是正确的。 'user_id' 的类型是预期的字符串,即使我的集合中有匹配的条目,我似乎也找不到返回空数组的原因。
此外,当我使用其他条件参数(除了用户)时,可以毫无问题地获取条目。
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',{
user:{
type: String,
trim:true
},
text:{
type: String,
required: true,
trim:true
},
verified:{
type: Boolean
}
})
【问题讨论】:
-
代码看起来不错。您能否提供一个您希望找到的示例 id 值和 Tweet 文档?该文档在
tweets集合中,对吧? -
是的。我有一个集合“推文”。示例文档:
{"_id":"5d0129be839e1711ca1b6d04", "user":"\"jimmyfallon\"", "text":"\"Might have to do both!!!\"", "verified":true}我将 id 作为“用户”传递,以便返回与该用户对应的所有推文。 -
看起来您的问题是您在匹配的字符串中嵌入了
"字符。它应该看起来像"user": "jimmyfallon"。 -
是的,这似乎是问题所在。我已经在搜索查询中添加了“”,它工作正常。谢谢。仍然困扰我的一件事是 mongodb 的行为。我的“用户”参数是字符串类型,而 mongodb 正在将“”添加到我的输入内容中。这是正常的 mongodb/mongoose 行为吗?
-
Mongodb 不会添加那些“”,它们一定来自其他地方
标签: node.js mongodb express mongoose