Javascript 在表示ObjectID的字符串数组中查找mongoose ObjectID时出现问题
我需要在如下数组中找到mongoose objectID的索引:Javascript 在表示ObjectID的字符串数组中查找mongoose ObjectID时出现问题,javascript,arrays,node.js,mongodb,mongoose-schema,Javascript,Arrays,Node.js,Mongodb,Mongoose Schema,我需要在如下数组中找到mongoose objectID的索引: [ { _id: 58676b0a27b3782b92066ab6, score: 0 }, { _id: 58676aca27b3782b92066ab4, score: 3 }, { _id: 58676aef27b3782b92066ab5, score: 0 }] 我用来比较的模型是一个mongoose模式,包含以下数据: {_id: 5868d41d27b3782b92066ac5, updatedAt: 2
[ { _id: 58676b0a27b3782b92066ab6, score: 0 },
{ _id: 58676aca27b3782b92066ab4, score: 3 },
{ _id: 58676aef27b3782b92066ab5, score: 0 }]
我用来比较的模型是一个mongoose模式,包含以下数据:
{_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 }
我正在尝试查找模型的索引。\u上面数组中的用户使用以下命令:
var isIndex = individualScores.map(function(is) {return is._id; }).indexOf(taskList[i]._user);
其中individualScores是原始数组,taskList[i]是任务模型。但是,它总是返回-1。它在数组中永远找不到正确的_id。我想您的问题与查询如何返回\u id有关 如果您将
\u id
作为字符串
,您的代码应该可以工作,请检查下面的代码段
但如果您得到ObjectsId
s,则必须首先将它们转换为字符串
var个人分数=[
{u id:“58676b0a27b3782b92066ab6”,分数:0},
{u id:“58676aca27b3782b92066ab4”,分数:3},
{u id:“58676aef27b3782b92066ab5”,分数:0}
]
var任务={
_id:“5868d41d27b3782b92066ac5”,
更新日期:新日期(“2017-01-01T21:38:30.070Z”),
创建日期:新日期(“2017-01-01T10:04:13.413Z”),
重复:“仅一次”,
结束:新日期(“2017-01-02T00:00:00.000Z”),
标题:“无忧无虑地上床睡觉/下来”,
_用户:“58676aca27b3782b92066ab4”,
__v:0,
includeInCalc:正确,
结果:{money:0,points:4},
活动:错误,
零用钱:0,
目标:[],
pointsawarded:{差:2,好:3,好:4},
blankUser:false
}
var isIndex=individualScores.map(
功能(is){
返回值为.\u id;
})
.indexOf(任务用户);
console.log(isIndex)
我认为您正在使用的流程应该运行良好,只需将“objectID”转换为字符串进行比较即可。使用.toString()
对\u id
和\u user
进行转换
像下面这样:
var isIndex = individualScores.map(function(is) {
return is._id.toString();
}).indexOf(taskList[i]._user.toString());
谢谢@Santiago,我会仔细看看,看看这是否能解决问题。(我以前试过,但是ObjectId的转换错误。)很好。显然,上次我没有正确地转换为字符串。):)