【发布时间】:2021-10-18 01:00:26
【问题描述】:
我从 Angular 服务接收一个数组并将其传递给 Mongoose/Express。我正在尝试查询 ObjectIds 并检索所有结果,但是当将我的数组转换为 ObectIds 时,我收到:错误:传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符串。
我传递的数组是:
阵列(6)[ “6104842e42c23e6d215651ca”, “6104844e42c23e6d215651cd”, “610484e042c23e6d215651e1”, “610484bf42c23e6d215651d2”, “6104838a42c23e6d215651c4”, “610483a342c23e6d215651c6”] P>
router.get('/favorite-image/:id', (req, res) => {
const ObjectId = require('mongodb').ObjectId;
var idArray = [req.params.id];
var ids = idArray.map(function(el){ return ObjectId(el)});
gfs.files.find({'_id': {$in: ids}}, (err, files) => {
//check if files exist
if (!files || files.length == 0) {
return res.status(404).json({
err: "No files exist"
});
};
//file exist
console.log(res.json(files))
return res.json(files)
});
});
我也尝试了 forEach 循环,但也没有用:
idArray.forEach(function (el){
String(el);
ObjectId(el);
})
非常感谢任何帮助。
【问题讨论】:
-
你是说
req.params.id是一个数组吗?那么idArray是一个数组数组,而猫鼬喜欢得到传递的字符串而不是数组。您能否添加将console.log(typeof el, el)放入循环时得到的输出,以澄清这一点? -
我收到:字符串 6104842e42c23e6d215651ca
标签: javascript arrays express mongoose