繁体   English   中英

水线(Sails.js):AND条件

[英]Waterline (Sails.js): AND conditions

我将mongodb与sails.js一起使用,该模型查询包含torrent文件标题的模型。 但是我无法使用“ AND”条件执行水线查询。 我已经用几种方法尝试过,但是大多数方法都返回空值,或者简单地讲,永不返回。

例如,数据库包含带有以下内容的条目: "title": "300 Rise Of An Empire 2014 720p BluRay x264-BLOW [Subs Spanish Latino] mkv"

逐行添加每个查询参数时:

var query = Hash.find();
query = query.where({ "title": { "contains": "spanish" } });
query = query.where({ "title": { "contains": "2014" } });
query = query.where({"or": [ { "title": { "contains": "720p" } }, { "title": { "contains": "1080p" } } ] });

它返回包含“ 2014” AND(“ 720p”或“ 1080p”)的条目,其中一些还包含“ spanish”,但我认为这只是一个巧合。

如何指定“西班牙语”与“ 2014”与(“ 720p”或“ 1080p”)?

谢谢!

有一个解决方案,但实际上是一个mongo解决方案:

query = query.where({"$and": [ { "title": { "contains": "720p" } }, { "title": { "contains": "1080p" } } ] });

注意$and键吗?

从sails-mongo来源:

/**
 * Parse Clause
 *
 * <clause> ::= { <clause-pair>, ... }
 *
 * <clause-pair> ::= <field> : <expression>
 *                 | or|$or: [<clause>, ...]
 *                 | $or   : [<clause>, ...]
 *                 | $and  : [<clause>, ...]
 *                 | $nor  : [<clause>, ...]
 *                 | like  : { <field>: <expression>, ... }
 *
 * @api private
 *
 * @param original
 * @returns {*}
 */

用这个:

var query = {
  title: [
     { contains: "spanish"},
     {contains: "2014"}
  ],
  or: [
     {title: { contains: "720p" } },
     {title: { contains: "1080p" } },
  ]
};

Model.find(query).exec(function(err,items) {
  ....
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM