基本上,我正在使用javascript通过需要Google地图集成的node.js为我的大学构建应用程序
我通过“ /”路线将一些项目传递到网站的登录页面,并传递了一些数组。最终代码如下所示:
LostItem.find({},function(err,allLostItems){
if(err)
{
console.log("Some error while finding the items in items.js")
req.flash("error","Following error encountered : " + err.message);
res.redirect("back");
}
else{
// render the results from arrays
res.render("landing",{foundItems:allLostItems});
}
});
但是,在使用Landing.ejs文件访问它的同时,使用以下代码:
<script async defer type="text/javascript">
var locations=[];
index=0;
lostItems.forEach(function(item){
var item_array=[];
// Some more code ...
</script>
我得到了错误:
lostItems未定义
我知道这可行:
<%lostItems.forEach(function(item){%>
//some code
<%)};%>
在脚本标签中执行上述代码的正确方法是什么?如果这个问题是基本问题,我深表歉意,我是javascript的新手,只是开始更深入地研究它。
丢失的项目架构为:
var lostItemsSchema=new mongoose.Schema({
item:String,
details:String,
specifications:String,
date:String,
time:String,
location: String,
lat: Number,
lng: Number,
author:{
id:{
type:mongoose.Schema.Types.ObjectId,
ref:"User"
},
username:String
},
comments:[
{
type: mongoose.Schema.Types.ObjectId,
ref:"Comment"
}
]
});
答案 0 :(得分:2)
您可以使用:
let items = '<%- lostItems %>';
items.forEach(function(item){
// Some more code ...
}
或
let items = '<%= lostItems %>';
items.forEach(function(item){
// Some more code ...
}
如果是JSON,请在客户端中对其进行解析:
let items = JSON.parse('<%= lostItems %>');
或
let items = JSON.parse('<%- lostItems %>');
或在服务器中将其字符串化:
res.render("landing",{ foundItems: JSON.stringify(allLostItems) });
答案 1 :(得分:0)
好的,我找到了解决此问题的方法。在服务器端使用以下代码:
new
并在客户端使用以下代码将其修复。
{lostItems:JSON.stringify( allLostItems)}