【问题标题】:mongoose.find() query only returns values I've saved via mongoosemongoose.find() 查询仅返回我通过 mongoose 保存的值
【发布时间】:2017-03-12 11:53:28
【问题描述】:
var LINK  = mongoose.model('link', {
  id: mongoose.Schema.Types.ObjectId,
  linkA: Boolean,
  linkB: Boolean,

}, 'link')

(LINK 模型 - 此处作为参考)


在 nodeJS 上使用 mongoose 时,我可以使用 find() 函数返回集合中的所有文档:

var Test = LINK.find({}, (err, user) => {
  if (err) console.log("error: " + err)
  else  console.log("users: " + user)
}, 4000)

返回终端中的所有数据。简单吧?

但是当我尝试使用查询时会出现问题:

var Test = LINK.find({linkA:'true'}, (err, user) => {
  if (err) console.log("error: " + err)
  else  console.log("users: " + user)
}, 4000)

最初的查询没有返回任何结果(即使事先填充了 mongodb 上的文档)。但是在通过 mongoose 将文档添加到 mongodb 之后,可以访问添加的文档,但不能访问在 mongodb 控制台上创建的任何其他文档。

这是有原因的吗?我怀疑我使用 find() 函数有误,但是当通过 mongoose 添加文档或我使用空查询时它似乎工作正常,所以我不确定。

任何帮助将不胜感激。 谢谢。

【问题讨论】:

  • 你是否故意在 find 中使用 linkA:'true' 作为字符串?
  • 是的-我已经测试过带引号和不带引号的情况,它的工作原理是一样的。
  • stackoverflow.com/questions/14183611/… 的可能欺骗。确保您了解它使用的是links 集合,而不是link。
  • 不,不是那样。查询在为空并返回所有数据时有效,只有在尝试使用带有参数的查询时,我才能访问数据,除非它是通过猫鼬添加的。
  • 我认为“真实”是问题所在。该属性是一个布尔值。它在猫鼬中工作的事实意味着猫鼬正在为您进行一些转换。

标签: javascript node.js mongodb express mongoose


【解决方案1】:

问题在于我存储信息的方式。

正如 Amiram Korach 所指出的,文档错误地存储了带引号的布尔值,因此 mongoose 将其识别为字符串值。

【讨论】:

    猜你喜欢
    • 2020-01-20
    • 2020-06-18
    • 2014-04-05
    • 1970-01-01
    • 2019-08-29
    • 2013-11-22
    • 2018-06-20
    • 2021-04-02
    • 2020-08-26
    相关资源
    最近更新 更多