node取mongodb数据

查看:81
本文介绍了node取mongodb数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我前端提交的数据是这样的

 {
    "Names": [{
        name: "关于我们",
        address: "[栏目]关于我们",
        icon: "默认",
        bg: "默认",
        Accor: ["checkmark-round", "close-round", 0]

    }, {
        name: "案例欣赏",
        address: "[栏目]案例欣赏",
        icon: "默认",
        bg: "默认",
        Accor: ["checkmark-round", "close-round", 0]
    }, {
        name: "服务介绍",
        address: "[栏目]服务介绍",
        icon: "默认",
        bg: "默认",
        Accor: ["checkmark-round", "close-round", 0]
    }]
}

利用node保存到mongodb里面
但是保存的样式是
这样的,

在利用express取到保存的数据,输出到服务器,我在利用axios,去取数据,但是取不到Names,能取到_id

这是取到的数据

PS:Names前面多了一个花括号,怎么能去掉啊

PSSS:我不能取到JSON数据。。

解决方案

这不是多了一个花括号的问题,从犯的错误来看,你可能对JSON是什么东西还缺乏了解。举个例子,100是数字,但是"100"是字符串。同理,{"a": 1}JSON"{\"a\": 1}"是字符串。
JSON的本质是一个可以嵌套的键值对,你不仅把一个JSON对象作为字符串存到了数据库里,而且是作为另一个JSON对象的存进去的。这种方式语法上虽然没有错,但对MongoDB而言没有任何意义,肯定也不能做任何查询。
没有看到代码,所以只能猜测可能发生了什么问题,据此来说明这个问题。
一般来说如果JSON是被POST过来的你会有一个类似于以下代码来得到这份数据:

var json = req.body.json;

从你上面的情况来看,你把这个东西直接给存进MongoDB里面,会有类似于:

var obj = {
  _id: new ObjectId(),
  json: ""
};
// 将obj保存到MongoDB

只有做了类似这样的操作,才会有你截图中的结果存在。要得到正确的结果,应该做的是:

var obj = JSON.parse(json); // 将客户端得到的字符串转换为真正的JSON
obj._id = new ObjectId();  // 为JSON添加一个唯一_id
// 保存到MongoDB

这篇关于node取mongodb数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆