You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:23:26