使用Sequelize如何指定要sorting/限制的字段?

我的查询是:

db.Question.findAll where: id: $notIn: if questionIds.length > 0 then questionIds else [-1] TopicId: topicCount.id PassageId: null status: 'active' level: $lte: startLevel $gte: endLevel include: [ model: db.Answer ] order: [db.Sequelize.fn 'RANDOM'] limit: questionSections[sectionIndex].goal * 2 

那生成以下查询:

 SELECT "Question".*, "answers"."id" AS "Answers.id", "answers"."answertext" AS "Answers.answerText", "answers"."iscorrect" AS "Answers.isCorrect", "answers"."createdat" AS "Answers.createdAt", "answers"."updatedat" AS "Answers.updatedAt", "answers"."questionid" AS "Answers.QuestionId" FROM (SELECT "Question"."id", "Question"."status", "Question"."questiontext", "Question"."level", "Question"."originalid", "Question"."createdbyuserid", "Question"."editedbyuserid", "Question"."createdat", "Question"."updatedat", "Question"."instructionid", "Question"."topicid", "Question"."subjectid", "Question"."passageid" FROM "questions" AS "Question" WHERE "Question"."id" NOT IN ( -1 ) AND "Question"."topicid" = '79' AND "Question"."passageid" IS NULL AND "Question"."status" = 'active' AND ( "Question"."level" <= 95 AND "Question"."level" >= 65 ) LIMIT 300) AS "Question" LEFT OUTER JOIN "answers" AS "Answers" ON "Question"."id" = "answers"."questionid" ORDER BY Random(); 

除了我希望ORDER BY应用于内部查询( SELECT "Question"."id", "Question"."status", )外,这一切都很好。 我怎样才能做到这一点?

您是否尝试过定义自定义作用域 ,例如random排列,然后在查询中使用该作用域:

 db.Question.scope('random').findAll({ where:{ .......... }, include: [{ model: db.Answer }], //order: [db.Sequelize.fn 'RANDOM'] <<<<<<< moved to custom scope limit: questionSections[sectionIndex].goal * 2 })