2017-06-12 36 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());