0
findeIndex在快速路由器函数中未返回正确的索引。findIndex未返回正确的索引
module.exports.nearestOffices = (req, res, next) => {
Order.findById(req.params.idOrder).exec()
.then(order => {
return Promise.all([
Promise.resolve(order),
Office.find({'location': {$near: order.address_deliver.location, $maxDistance: maxDistance}}).sort({'timeToFinish': -1}).exec()
]);
})
.then(rslts => {
let order = rslts[0];
let offices = rslts[1];
console.log('findIdex test: ', offices[0].stockProducts.findIndex(o => {
console.log(o.product, '===', order.products[1].product);
return o.product === order.products[1].product;
}));
return Promise.resolve('message');
})
.then(rslt => res.json(rslt))
.catch(err => next(err));
}
变量的内容订购和办公室是:
//offices
[
{
"stockProducts": [
{
"product": "58c1a7f62193b95eec1765ad",
"_id": "58c1a7f72193b95eec1765ae",
"stock": 3
},
{
"product": "58c1a8212193b95eec1765af",
"_id": "58c1a8212193b95eec1765b0",
"stock": 15
},
{
"product": "58c1a84a2193b95eec1765b1",
"_id": "58c1a84a2193b95eec1765b2",
"stock": 20
},
{
"product": "58c1a85f2193b95eec1765b3",
"_id": "58c1a85f2193b95eec1765b4",
"stock": 10
}
]
}
];
//order
{
"products": [
{
"product": "58c1a84a2193b95eec1765b1",
"price": 2,
"cant": 5,
"_id": "58c1c0e57b32c431d99a3969"
},
{
"product": "58c1a8212193b95eec1765af",
"price": 6,
"cant": 2,
"_id": "58c1c1107b32c431d99a396a"
}
]
};
所述的console.log的输出是:
58c1a7f62193b95eec1765ad '===' 58c1a8212193b95eec1765af
58c1a8212193b95eec1765af '===' 58c1a8212193b95eec1765af
58c1a84a2193b95eec1765b1 '===' 58c1a8212193b95eec1765af
58c1a85f2193b95eec1765b3 '===' 58c1a8212193b95eec1765af
findIdex test: -1
它应具有在第二行返回1,但我不知道为什么它没有,我在另一个没有函数的js文件中测试了它,它工作得很好,我不知道为什么它不起作用。
鉴于您使用过'===','typeof o.product'和'typeof order.products [1] .product'是什么? – Bergi
@Bergi他们都是字符串。我也尝试过==,它也不起作用,我一直在这样的3个小时。 – yosiprompt
也许有一些白色空间或什么的,尝试修剪它 –