mongoose.find()查询只返回通过mongoose保存的值

时间:2016-10-29 23:10:23

标签: javascript node.js mongodb express mongoose

 <input type="checkbox" 
     id="defaultAddress{{$id}}" 
     ng-model="addressChecked" 
     name="defaultAddress" 
     ng-click="makeAddressDefault(add, $event)" 
     ng-checked="addresses.length === 1 || add.IsDefault() || isSelected(add.id)">
 <label ng-init="isAddressDefault(addresses, add)" for="defaultAddress{{$id}}">
     {{add.FirstName}} {{add.LastName}}<br />
     {{add.Address1}}<br />
     {{add.City}}, {{add.State}} {{add.ZIP}}
 </label>

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

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

var LINK  = mongoose.model('link', {
  id: mongoose.Schema.Types.ObjectId,
  linkA: Boolean,
  linkB: Boolean,

}, 'link')

返回终端中的所有数据。容易,对吧?

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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