3

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

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

所以,这有效:

wordStream.words.push(wordData);

这不会:

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

  2. 如果我应该解析 JSON,我该如何做而不抛出错误?我相信,在解析之前,我需要将所有内容都放在双引号“”中,但是由于某种原因,每当我用双引号创建一个字符串并对其进行解析时,一切都会出错。

这是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

想法?

4

1 回答 1

1

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

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

如果我应该解析 JSON,我该如何做而不抛出错误?我相信,在解析之前,我需要将所有内容都放在双引号“”中,但是由于某种原因,每当我用双引号创建一个字符串并解析它时,一切都会出错。

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

你可以:

  • 使用识别无效 JSON 对象的库(请不要)
  • 使用eval(这是一个安全问题,所以不要这样做)
  • 修复问题的根源,创建真正的 JSON 对象。这并不难,您可以在此处查看 JSON 功能
于 2013-05-11T15:36:31.160 回答