首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将Json对象存储在Mongoose字符串键中

将Json对象存储在Mongoose字符串键中
EN

Stack Overflow用户
提问于 2013-07-05 23:01:33
回答 5查看 53.3K关注 0票数 34

在我的Mongoose模式中,我有一个字符串字段,我希望能够在其中存储一个JSON对象。有可能吗?在Postgres中,可以将字典存储在字符串列中。

我之所以这样做,是因为字典(实际上是JS中的JSON对象)只是一个简单的读写值,不需要查询,而且还因为它只是一个值,而不是一个值数组。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-07-05 23:55:36

是的,您可以只存储{myJsonProperty: JSON.stringify(myObject)}。希望您知道,您还可以在mongoose模式中设置{myJsonProperty: Object}并存储整个对象,而不会无缘无故地将其转换为字符串。它不必是一个带有模式的嵌套文档,它可以只是一个普通的javascript对象。

票数 109
EN

Stack Overflow用户

发布于 2016-04-20 16:48:36

如果您可以将字段的类型从"String“更改为"Object”,则可以按原样保存json。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var schema_obj = new Schema({
field1: Object,
..
});
票数 18
EN

Stack Overflow用户

发布于 2016-02-08 14:40:15

公认的答案在大多数情况下都是好的。

但是,如果您有一个想要存储的对象,并且您无法控制对象键(例如,它们可能是用户提交的),那么您可能需要考虑将这些对象存储为stringifed。这使您可以克服MongoDB对keys must not contain the reserved characters $.施加的限制。

您可以使用Mongoose的getter和setter来实现这一点,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data: {
  type: String,
  get: function(data) {
    try { 
      return JSON.parse(data);
    } catch(error) { 
      return data;
    }
  },
  set: function(data) {
    return JSON.stringify(data);
  }
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17497875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文