需要一个没有JSON引号的值

时间:2015-11-25 11:59:04

标签: javascript json node.js

这是我的代码:

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;

那我怎么能做到这一点?

3 个答案:

答案 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根据你的要求,但它变成你好。意思是说所有双引号都被替换了。