这是我的代码:
router.post('/findmanychallengesbyid', auth, function(req, res, next){
if(!req.body.ids){
return res.status(400).json({message: 'Geen ids'});
}
var challengeData = [];
for( var i = 0; i < JSON.parse(req.body.ids).length; i++ ) {
Challenge.findById(JSON.parse(req.body.ids)[i].toString().replace(/\"/g, ""), function (err, doc){
challengeData.push(doc);
});
}
res.json(challengeData);
});
挑战是我的nodejs应用程序的架构。
当我做res.json(JSON.parse(req.body.ids))时,我得到:
[
"56313da58c5ba50300f2b4f0",
"564cac9c097c07030038cac0",
"563140668c5ba50300f2b4f3"
]
Challenge.findById要求输入:
56313da58c5ba50300f2b4f0
现在它将此作为输入:
&#34; 56313da58c5ba50300f2b4f0&#34;
那我怎么能做到这一点?
答案 0 :(得分:1)
使用它:
.replace(/\"/g, "")
替换“”
答案 1 :(得分:1)
如果我正确理解了代码,您想要搜索一个id数组。
正确的方法是使用.find
router.post('/findmanychallengesbyid', auth, function(req, res, next){
if(!req.body.ids){
return res.status(400).json({message: 'Geen ids'});
}
Challenge.find({
'_id': { $in: JSON.parse(req.body.ids)}
}, function(err, docs){
res.json(docs);
});
});
答案 2 :(得分:0)
将JSONValue转换为String:
String.ValueOf(iets);
或者您可以使用String Class的replaceAll函数
iets.toString().replaceAll("\"", "");
此方法替换了所有双引号,而不是第一个和最后一个。
示例:&#34;您好&#34;成为你好,但如果它是&#34;他&#34; llo&#34;它应该是He&#34; llo根据你的要求,但它变成你好。意思是说所有双引号都被替换了。