mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 02:55:58 +01:00 
			
		
		
		
	feat: use covered query
This commit is contained in:
		| @@ -15,16 +15,23 @@ module.exports = function (module) { | |||||||
| 		if (!key) { | 		if (!key) { | ||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		if (Array.isArray(key)) { | 		if (Array.isArray(key)) { | ||||||
| 			const data = await module.client.collection('objects').find({ _key: { $in: key } }).toArray(); | 			const data = await module.client.collection('objects').find({ | ||||||
| 			var map = {}; | 				_key: { $in: key }, | ||||||
|  | 			}, { _id: 0, _key: 1 }).toArray(); | ||||||
|  |  | ||||||
|  | 			const map = {}; | ||||||
| 			data.forEach(function (item) { | 			data.forEach(function (item) { | ||||||
| 				map[item._key] = true; | 				map[item._key] = true; | ||||||
| 			}); | 			}); | ||||||
|  |  | ||||||
| 			return key.map(key => !!map[key]); | 			return key.map(key => !!map[key]); | ||||||
| 		} | 		} | ||||||
| 		const item = await module.client.collection('objects').findOne({ _key: key }); |  | ||||||
|  | 		const item = await module.client.collection('objects').findOne({ | ||||||
|  | 			_key: key, | ||||||
|  | 		}, { _id: 0, _key: 1 }); | ||||||
| 		return item !== undefined && item !== null; | 		return item !== undefined && item !== null; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| @@ -74,15 +81,16 @@ module.exports = function (module) { | |||||||
| 		if (!key) { | 		if (!key) { | ||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
| 		var data = { data: value }; | 		await module.setObject(key, { data: value }); | ||||||
| 		await module.setObject(key, data); |  | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	module.increment = async function (key) { | 	module.increment = async function (key) { | ||||||
| 		if (!key) { | 		if (!key) { | ||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
| 		const result = await module.client.collection('objects').findOneAndUpdate({ _key: key }, { $inc: { data: 1 } }, { returnOriginal: false, upsert: true }); | 		const result = await module.client.collection('objects').findOneAndUpdate({ | ||||||
|  | 			_key: key, | ||||||
|  | 		}, { $inc: { data: 1 } }, { returnOriginal: false, upsert: true }); | ||||||
| 		return result && result.value ? result.value.data : null; | 		return result && result.value ? result.value.data : null; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -428,7 +428,7 @@ module.exports = function (module) { | |||||||
| 		count = count !== undefined ? count : 0; | 		count = count !== undefined ? count : 0; | ||||||
| 		buildLexQuery(query, min, max); | 		buildLexQuery(query, min, max); | ||||||
|  |  | ||||||
| 		const data = await module.client.collection('objects').find(query, { projection: { _id: 0, _key: 0, score: 0 } }) | 		const data = await module.client.collection('objects').find(query, { projection: { _id: 0, value: 1 } }) | ||||||
| 			.sort({ value: sort }) | 			.sort({ value: sort }) | ||||||
| 			.skip(start) | 			.skip(start) | ||||||
| 			.limit(count === -1 ? 0 : count) | 			.limit(count === -1 ? 0 : count) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user