【发布时间】: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