如何解决当数据作为json对象通过EJS和Node
我正在尝试访问通过EJS视图中的表单提交的路由文件中的数据。有了这个房间的详细信息,我将转到带有房间ID和房间名称的下一条路线。问题是返回对象是字符串,无法转换为JSON。
如何访问Json对象room及其值,如room._id,room.roomName
Welcome.ejs
<form action="/chat" method="post">
<div class="form-control">
<label for="username">Display Name</label>
<input type="text" name="username" id="username" placeholder="Enter username..." value="<%= name %>" required />
</div>
<div class="form-control">
<label for="room">Room</label>
<select name="room" id="room">
<% rooms.forEach(function(room){ %>
<option value="<%= room %>" data-roomid="<%= room._id %>" data-roomtype="<%= room.roomType %>"><%= room.roomName %></option>
<% }); %>
</select>
</div>
<div class="form-control">
<input type="hidden" name="email" value="<%= email %>" />
<input type="hidden" name="img" value="<%= img %>" />
<input type="hidden" name="googleId" value="<%= googleId %>" />
<input type="hidden" name="userId" value="<%= userId %>" />
</div>
<button type="submit" class="btn">Join Chat</button>
</form>
Routes.js
route.get('/welcome',async(req,res) => {
let roomsMap = [];
try{
roomsMap = await Chatroom.find({}).select('roomName roomType userAllowed');
}
catch(err) {
res.status(400).json({ message: "Not able to get rooms" });
};
//roomsMap is returning proprer json
res.render('welcome',{
name: req.session.displayName,email: req.session.email,user: req.session.userInfo,img: req.session.img,googleId: req.session.googleId,userId: req.session.userId,rooms: roomsMap
});
});
route.post("/chat",(req,res) => {
let postdata = req.body;
let room = postdata.room;
console.log('postdata room ',room);
room = JSON.stringify(room);
console.log('room ',room);
room = JSON.parse(room);
console.log(typeof room);
console.log('room obj ',room);
res.render('chatrooms',{
displayName: postdata.username,room: postdata.room.roomName,roomid: room._id,email: postdata.email,img: postdata.img,googleId: postdata.googleId,userId: postdata.userId
});
});
我有控制台输出,可以更轻松地了解后台发生的情况。
postdata room { _id: 5f4f3662cb74553d5e03d076,roomName: 'PHP',roomType: 'public' }
room "{ _id: 5f4f3662cb74553d5e03d076,\r\n roomName: 'PHP',\r\n roomType: 'public' }"
string
room obj { _id: 5f4f3662cb74553d5e03d076,roomType: 'public' }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。