[英]Feathers-mongoose $like query for MongoDb getting Error
我有以下 Mongoose 架構 -
const myTableSchema = new Schema({
Category: { type: String, required: false },
Tag: { type: String, required: false },
createdAt: { type: Date, 'default': Date.now },
updatedAt: { type: Date, 'default': Date.now },
});
請注意,它們都是 String。 我正在嘗試進行如下查詢 -
localhost:1971/api/myTable?Category[$like]=Javascript
我在類別列中有 Javascript 行。 但是出現以下錯誤-
{
"name": "GeneralError",
"message": "Can't use $like with String.",
"code": 500,
"className": "general-error",
"data": {},
"errors": {}
}
MongoDB和Mongoose沒有$like
運算符。 實施搜索的常見方法(請參閱FAQ )是添加一個鈎子 ,該鈎子將可搜索的詞轉換為MongoDB $ regex查詢 ,例如,以支持您正在尋找的$like
語法:
exports.searchRegex = function () {
return function (hook) {
const query = hook.params.query;
for (let field in query) {
if(query[field].$like && field.indexOf('$') == -1) {
query[field] = { $regex: new RegExp(query[field].$search) }
}
}
hook.params.query = query
return hook
}
}
我知道討論這個問題已經有一段時間了,但我有一個類似的問題,@Daff提供的代碼對我幫助很大,但它包含一個錯誤。
檢查query[field].$like
是否存在,然后將query[field].$search
附加到最終查詢。
正確的代碼表示(如果遵循原始問題)應該是:
exports.searchRegex = function () {
return function (hook) {
const query = hook.params.query;
for (let field in query) {
if(query[field].$like && field.indexOf('$') == -1) {
query[field] = { $regex: new RegExp(query[field].$like) }
}
}
hook.params.query = query
return hook
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.