我正在測驗find()和$in,我提供了一個陣列,其中有一個匹配的名字串列作為查詢輸入,以找到相應的_id。然而,我只能得到一個匹配的(第一個),即使我在陣列中有多個匹配的用戶名稱。
我怎樣才能用一個用戶名串列作為查詢輸入來回傳多個匹配的用戶名?$in "是正確的方法嗎?
ps:"$in "是正確的方法。
ps: 我是網路編程的新手,下面的id是被屏蔽的;
exports.getUserID = (req, res, next) => //span> {
const namearray = req.body.name.split(' , ')。
console.log('name array:'/span>, namearray)。
const myCursor = User.find({ name: { $in: namearray }) }).then(users => {
users.forEach(user => {
console.log('found user id:', user._id) 。
});
res.status(200).send(用戶)。
});
};
它只回傳一個檔案,如下所示,即使namearray有3個匹配的名字。
[
{
"works"/span>: [],
"_id": "6xxxxxxxxxxxxx",
"name": "user1",
"email": "[email protected]",
"__v": 0.
}
]
控制臺輸出:
name array: [ 'user1', ' user2', ' user3']
發現用戶 id: 6xxxxxxxxxxxxx
如果我使用陣列(userName)硬編碼一個名字串列,如下所示,它可以正常作業。
exports.getUserID = (req, res, next) => /span> {
const userNAME = ['user1'/span>, 'user2'/span>, 'user3'/span>]。
// const namearray = req.body.name.split(',');
const myCursor = User.find({ name: { $in: userNAME }) }).then(users => {
users.forEach(user => {
console.log('found user id:', user._id) 。
});
res.status(200).send(用戶)。
});
};
當硬編碼名稱陣列時,它回傳3個匹配的檔案。
[
{
"works": [],
"_id": "6xxxxxxxxxxxxx",
"name": "user1",
"email": "[email protected]",
"__v": 0.
},
{
"works": [],
"_id": "6xxxxxxxxxxxxx"。
"name": "user2",
"email": "[email protected]",
"__v": 0.
},
{
"works": [],
"_id": "6xxxxxxxxxxxxx"。
"name": "user3",
"email": "[email protected]",
"passwordChangedAt": "2019-07-01T00:00:00.000Z",
"__v": 0.
}
]
控制臺輸出:
發現用戶 id: 6xxxxxxxxxxxx1
發現用戶 id: 6xxxxxxxxxxxx2
發現用戶 id: 6xxxxxxxxxxxx3
這是我的html代碼:
<! DOCTYPEhtml>
<html>
< form action="/users/getUserID" method="POST" id="getuserid" enctype="application/x-www-form-urlencoded">
<div>
<label for="name"> 輸入用戶名(s)(用逗號分隔用戶)。</label>
< input type="text" id="name" name="name">
<button id="getuserid" type="submission"> 獲取ID </button>
</div>/span>
</form>
</html>
ps: 稍后,我將把找到的用戶ID保存為一個物件ID陣列,以寫入另一個集合,該集合有一個以物件ID陣列為模式的欄位
。uj5u.com熱心網友回復:
$in是正確的方法。我認為問題出在你分割namearray的方式上。在結果中存在空格,這就是為什么用硬編碼的方案可以作業。
改變這一行:
const namearray = req. body.name.split(', ')。
到此為止:
const namearray = req. body.name.split(', ')。
uj5u.com熱心網友回復:
除了D. Zsolt指出的解決方案外,我還使用map()來修剪掉空格。
const namearray = req.body.name。 split(',') 。 map(item => item.trim() )。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/306889.html
標籤:
上一篇:按組統計符合某些標準的觀察結果R
下一篇:檢索以字串開頭的陣列項的有效方法
