node取mongodb数据
本文介绍了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屋!
查看全文