Sails.js集合是否支持嵌套where子句?附日期查询需求
Sails.js Collection 嵌套where子句的使用指南
当然可以在Sails.js的Collection中使用嵌套where子句!Sails.js底层依赖的Waterline ORM完全支持复杂的嵌套查询逻辑,刚好能满足你筛选start_date大于当前日期数据的需求,下面结合你的场景来具体说明:
基础需求:筛选start_date大于当前日期的记录
如果只是单纯要找出start_date晚于当前时间的记录,直接在where条件里定义即可:
// 获取当前时间 const now = new Date(); // 替换成你的集合名称,比如QuizPoll.find(...) YourCollectionName.find({ where: { start_date: { '>': now } } }) .exec((err, matchedRecords) => { if (err) { // 这里处理查询错误,比如打印日志或返回错误信息 console.error('查询出错:', err); return; } // 拿到符合条件的记录后做后续处理 console.log('符合条件的记录:', matchedRecords); });
嵌套where子句的进阶用法
如果需要更复杂的多条件组合(比如同时满足type为quiz,且start_date大于当前日期或者status为1),就可以用嵌套的where结构来实现:
const now = new Date(); YourCollectionName.find({ where: { type: 'quiz', // 先限定类型为quiz or: [ { start_date: { '>': now } }, // 条件1:start_date大于当前时间 { status: '1' } // 条件2:状态为1 ] } }) .exec((err, results) => { // 错误处理和结果逻辑 });
要是需要更多层的嵌套(比如同时满足A条件,且满足B或C条件),也可以这样写:
YourCollectionName.find({ where: { and: [ { recruiter_id: null }, // 第一个条件:recruiter_id为空 { or: [ { start_date: { '>': new Date() } }, // 子条件1:start_date大于现在 { university_id: null } // 子条件2:university_id为空 ] } ] } }) .exec((err, results) => { // 处理逻辑 });
小提醒
从你提供的集合结构来看,start_date字段似乎被截断了,记得确保你的集合中确实存在这个字段,或者把代码里的字段名替换成实际的名称哦~另外Waterline还支持>=、<、!=、in等多种操作符,你可以根据实际需求灵活选用。
内容的提问来源于stack exchange,提问作者Chetan
相关产品推荐
相关产品推荐

