【问题标题】:Sails.js - data object becomes blank when I was exec()Sails.js - 当我是 exec() 时数据对象变为空白
【发布时间】:2014-12-14 00:16:53
【问题描述】:

我的应用的控制器操作有一个 while 循环(while (item = stream.read()))

如果我执行以下操作:

while (item = stream.read()) {        
    console.log(item);
     }

如果我执行以下操作,我可以看到项目对象:

while (item = stream.read()) { 
    Buzzfeed.find({'title': {'contains': item.title}}).exec(function(err, item) {
        console.log(item); 
    });
}

数据以一系列空数组的形式出现

作为参考,这里是我的整个控制器的链接:http://pastebin.com/YQJTC9w0

好奇我哪里出错了?

【问题讨论】:

  • 您是否确认您的数据库中有Buzzfeed 记录,其标题包含正在返回的item.title 值?如果不是,那些空数组可能是预期的输出;您将执行多个查询,但没有返回任何结果。

标签: node.js model-view-controller sails.js


【解决方案1】:

试试

while (item = stream.read()) { 
  Buzzfeed
   .find()
   .where({'title': {'contains': item.title}})
   .exec(function(err, item) {
      console.log(item); 
    });
}

来自Waterline ORMdocumentationfind 用于查找单个条件。它应该使用where,因为它需要查询“where”逻辑。

【讨论】:

  • 即使代码是正确的,也最好包含一些解释。
  • 抱歉,谢谢您的建议。其实因为我的英语不好,即使是简单的事情我也很难解释,哈哈。以后不再重复。
  • OP 的语法很好; find 的第一个参数是 where 子句。链接.where() 是一种可选的替代语法。因此,您的代码在功能上与他们发布的内容相同。
  • @sgress454 我也不知道它是否是错误。因为如果在find 中使用where 链接某些字段,我也有类似的问题,不太明白,但它可以使用这种方式,所以我总是使用这种方式。
猜你喜欢
  • 1970-01-01
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
  • 1970-01-01
相关资源
最近更新 更多