2017-06-12 37 views
0

字符串數組發現貓鼬的ObjectID我需要找到貓鼬的objectID的指數在一個這樣的數組:問題在代表的ObjectID

[ { _id: 58676b0a27b3782b92066ab6, score: 0 }, 
    { _id: 58676aca27b3782b92066ab4, score: 3 }, 
    { _id: 58676aef27b3782b92066ab5, score: 0 }] 

我使用比較該模型是一個貓鼬模式具有以下數據:

{_id: 5868d41d27b3782b92066ac5, 
updatedAt: 2017-01-01T21:38:30.070Z, 
createdAt: 2017-01-01T10:04:13.413Z, 
recurrence: 'once only', 
end: 2017-01-02T00:00:00.000Z, 
title: 'Go to bed without fuss/coming down', 
_user: 58676aca27b3782b92066ab4, 
__v: 0, 
includeInCalc: true, 
result: { money: 0, points: 4 }, 
active: false, 
pocketmoney: 0, 
goals: [], 
pointsawarded: { poorly: 2, ok: 3, well: 4 }, 
blankUser: false } 

我試圖找到model._user的指標上面使用數組中的以下內容:

var isIndex = individualScores.map(function(is) {return is._id; }).indexOf(taskList[i]._user); 

其中individualScores是原始數組,taskList [i]是任務模型。但是,這總是返回-1。它永遠不會在數組中找到正確的_id。

回答

1

我猜你的問題涉及到如何_id您的查詢

如果你_idString,你的代碼應該工作,檢查以下

片斷但是如果相反,你得到ObjectsId s的返回,你必須將它們轉換成字符串第一

var individualScores = [ 
 
    { _id: "58676b0a27b3782b92066ab6", score: 0 }, 
 
    { _id: "58676aca27b3782b92066ab4", score: 3 }, 
 
    { _id: "58676aef27b3782b92066ab5", score: 0 } 
 
] 
 

 
var task = { 
 
     _id: "5868d41d27b3782b92066ac5", 
 
     updatedAt: new Date("2017-01-01T21:38:30.070Z"), 
 
     createdAt: new Date("2017-01-01T10:04:13.413Z"), 
 
     recurrence: 'once only', 
 
     end: new Date("2017-01-02T00:00:00.000Z"), 
 
     title: 'Go to bed without fuss/coming down', 
 
     _user: "58676aca27b3782b92066ab4", 
 
     __v: 0, 
 
     includeInCalc: true, 
 
     result: { money: 0, points: 4 }, 
 
     active: false, 
 
     pocketmoney: 0, 
 
     goals: [], 
 
     pointsawarded: { poorly: 2, ok: 3, well: 4 }, 
 
     blankUser: false 
 
} 
 

 
var isIndex = individualScores.map(
 
    function(is) { 
 
     return is._id; 
 
}) 
 
.indexOf(task._user); 
 

 
console.log(isIndex)

+1

謝謝@Santiago我定睛一看,看看是否能解決它。 (我以前試過,但ObjectIds的轉換錯誤。) –

+1

那麼工作。很明顯,上次我沒有正確轉換爲字符串)。 :) –

0

我認爲你的程序應該運行良好,你只需要將'objectID'轉換爲String進行比較。對於_id_user都使用.toString()進行轉換。

像波紋管:

var isIndex = individualScores.map(function(is) { 
       return is._id.toString(); 
       }).indexOf(taskList[i]._user.toString());