From 802bbcf212fe6fcd520f01646c75e8a76e3b8cf2 Mon Sep 17 00:00:00 2001 From: OldHawk Date: Tue, 8 May 2018 15:02:00 +0800 Subject: [PATCH] feat(traces): add traces list filter --- .../controllers/traces.server.controller.js | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/modules/traces/server/controllers/traces.server.controller.js b/modules/traces/server/controllers/traces.server.controller.js index 1b894cbc..79eb56be 100644 --- a/modules/traces/server/controllers/traces.server.controller.js +++ b/modules/traces/server/controllers/traces.server.controller.js @@ -6,6 +6,7 @@ var path = require('path'), config = require(path.resolve('./config/config')), mongoose = require('mongoose'), + objectId = require('mongodb').ObjectId, errorHandler = require(path.resolve('./modules/core/server/controllers/errors.server.controller')), User = mongoose.model('User'), Trace = mongoose.model('Trace'), @@ -35,16 +36,24 @@ exports.list = function (req, res) { var keysS = req.query.keys + ''; var keysT = keysS.split(' '); - keysT.forEach(function (it) { - var ti = new RegExp(it, 'i'); - keysA.push(ti); - }); + if (keysT.length === 1 && mongoose.Types.ObjectId.isValid(keysT[0])) { + keysA = objectId(keysT[0]); + } else { + keysT.forEach(function (it) { + var ti = new RegExp(it, 'i'); + keysA.push(ti); + }); + } } - if (keysA.length > 0) { - condition.$or = [ - {'content.action': {'$all': keysA}} - ]; + if (mongoose.Types.ObjectId.isValid(keysA)) { + condition.user = keysA; + } else { + if (keysA.length > 0) { + condition.$or = [ + {'content.action': {'$all': keysA}} + ]; + } } var countQuery = function (callback) {