[英]How can I construct this MongoDB sort query properly?
我想在將數據傳遞給Mongo之前在后端構造一個mongo排序查詢。 在代碼中,req.query.so是排序類型(如name或id),req.query.sd是排序方向(1表示升序,-1表示降序)
這是引發錯誤的代碼:
exports.indexWithStatus = function (req, res) {
// sort
let sort = null
if (req.query.so && req.query.sd) {
sort = `{${req.query.so}: ${req.query.sd}}` // not being constructed
correctly
}
我得到的錯誤是:
name: 'MongoError',
message:
'Failed to parse: sort: "{name: 1}". \'sort\' field must be of BSON type object.',
ok: 0,
errmsg:
'Failed to parse: sort: "{name: 1}". \'sort\' field must be of BSON type
object.',
code: 9,
codeName: 'FailedToParse' }
我對Mongo不是很熟悉,我在網上發現的關於這個錯誤的大多數問題來自試圖將數組而不是對象傳遞給.sort()的人。
我認為問題是通過使用替換語法$ {req.query.so}我創建了一個字符串,而不是一個對象,但我不確定這一點。 請告訴我如何解決這個問題。
替換語法很好,您可以在錯誤消息中看到您獲得name
和1
。 問題是,你正在創建sort
使用反單引號作為字符串` `
`{${req.query.so}: ${req.query.sd}}`
=> "{name: 1}"
但是如果你把它創建為一個對象var sort = {}
並添加params它應該工作
sort[`${one}`] = `${two}`
=> {name: "1"}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.