Node.js 猫鼬';查找';使用条件参数查询时返回空数组

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) =>

我收集了一些tweet,需要获取特定用户的tweet。我使用mongoose“Find”查询来查找推文。我从req.params获取用户_id并将其用作条件参数,但mongodb返回一个空数组


我尝试过使用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不会添加这些“”,它们必须来自其他地方