我应该在插入MongoDB之前解析JSON数据吗?

时间:2013-05-11 06:55:43

标签: node.js mongodb mongoose

所以,我从客户端收到一些JSON数据到我的Node.JS服务器。我想使用Mongoose将json插入我的MongoDB实例。

我可以按原样插入JSON,它工作得很好,因为它只是文本。但是,我想在插入之前对其进行解析,这样当我稍后提取它时,它将会很好而且整洁。

所以,这有效:

wordStream.words.push(wordData);

这不是:

wordStream.words.push(JSON.parse(wordData));
  1. 那么,我是否应该在插入之前解析JSON?

  2. 如果我要解析JSON,如何在不抛出错误的情况下执行此操作?我相信,在解析它之前,我需要将所有内容都放在双引号“”中,但出于某种原因,每当我使用双引号创建一个字符串并解析它时,它都会将所有内容都弄错。

    < / LI>

    这是JSON:

          { word: 'bundle',
              definitions:
               [ { definition: 'A group of objects held together by wrapping or tying.',
                   partOfSpeech: 'noun' } ],
              urlSource: 'testurl',
              otherSource: '' }
    

    我尝试解析时的错误

    /Users/spence450/Documents/development/wordly-dev/wordly-server/node_modules/mongoose/lib/utils.js:409
            throw err;
                  ^
    SyntaxError: Unexpected token o
    

    想法?

1 个答案:

答案 0 :(得分:1)

  

那么,我是否应该在插入之前解析JSON?

将字符串转换为JSON对象将在以后需要在MongoDB数据库中进行查询时受益。

  

如果我要解析JSON,如何在不抛出错误的情况下执行此操作?我相信,在解析之前我需要把所有内容都放在双引号“”中,但出于某种原因,每当我用双引号创建一个字符串并解析它时,它就会把所有内容都弄错了。

您没有收到JSON文档。 JSON文档必须包含引用的键。

你可以:

  • 使用识别无效JSON对象的库(请不要)
  • 使用eval(这是一个安全问题,所以不要这样做)
  • 修复问题的根源,创建真正的JSON对象。这并不难,您可以看到JSON功能here