if 语句中的 Ejs 无法读取未定义的属性' foo '



>我正在尝试使用 Nodejs 创建一个购物车。在我的项目中,我有一个带有 ejs 的"if 语句",例如 => '

<%   if (session.cart.totalItems) { %>
</i> Cart <span class="badge"><%=  session.cart.totalItems  %></span></a>
<% } %>`

而且,当第一次进入网站时,我收到错误"无法读取未定义的属性'总项目'",因为总项目是 cookie 的空部分。实际上,如果我将项目添加到购物车,该功能正在工作。我的问题发生在我第一次进入网站时。我已经搜索了如何解决这个问题,但到目前为止找不到任何解决方案。知道我如何解决问题或第一次打开网站而没有错误吗? 应用程序.js'

const mongoose          =   require("mongoose"),
express           =   require("express"),
app               =   express(),
bodyParser        =   require("body-parser"),
passport          =   require("passport"),
session           =   require("express-session"),
LocalStrategy     =   require("passport-local"),
expressValidator  =   require("express-validator"),
MongoStore        =   require("connect-mongo")(session),
flash             =   require('connect-flash');
morgan            =   require("morgan");
User              =   require("./models/users");
Cart              =   require("./models/cart");
var cookieParser = require('cookie-parser');
const       productsModel = require("./models/product");
///App Config////////////////
app.set("view engine","ejs" );
app.use(express.static("public"));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(expressValidator());
app.use(cookieParser());
app.use(flash());
///pass////validator///
app.use(passport.initialize());
app.use(passport.session());
require('./node_modules/passport/lib/middleware/authenticate')(passport);//add this line
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
app.use(require("express-session")({
secret:"guvenlik cumlesi",
resave:false,
saveUninitialized:false,
store:new MongoStore({mongooseConnection : mongoose.connection}),
////// 180 min // 60 sc///1000//mlsec
cookie:{maxAge:180 *60*1000}
}));
/////////middleware
app.use(function(req, res, next) {
res.locals.session = req.session;
res.locals.totalItems = null
next();
});
///////routers////////
const   indexRouter = require("./routes/indexRouter"),
signupR     = require("./routes/admin/signupR"),
loginR      = require("./routes/admin/loginR"),
cartR       = require("./routes/users/checkoutCart")
adminE      =require("./routes/admin/adminE");
app.use(indexRouter);
app.use(loginR);
app.use(signupR);
app.use(adminE);
app.use(cartR);
//-------------------//// Basit server////---------------//
const server = app.listen(3000, function(err){
if(err){
console.log(err);
}
console.log("sunucu port : %d ", server.address().port);
});
//////mogoosee//////
mongoose.connect('mongodb://localhost/P-Scrubs');
mongoose.connection.on("connected",()=>{
console.log("db Bagli")
})
mongoose.connection.on("error",()=>{
if(err) {
console.log("DBhata ===>>",err)
}
console.log("db kaka")
})
module.exports = app;

我的购物车模型'

module.exports = function Cart(cart) {
this.items = cart.items || {};
this.totalItems = cart.totalItems || 0;
this.totalPrice = cart.totalPrice || 0;
this.add = function(item, id) {
var cartItem = this.items[id];
if (!cartItem) {
cartItem = this.items[id] = {item: item, quantity: 0, price: 0};
}
cartItem.quantity++;
cartItem.price = cartItem.item.price * cartItem.quantity;
this.totalItems++;
this.totalPrice += cartItem.item.price;
};
this.remove = function(id) {
this.totalItems -= this.items[id].quantity;
this.totalPrice -= this.items[id].price;
delete this.items[id];
};
this.getItems = function() {
var arr = [];
for (var id in this.items) {
arr.push(this.items[id]);
}
return arr;
};
};`

尝试这样做:

<%   if (session.cart && session.cart.totalItems) { %>
</i> Cart <span class="badge"><%=  session.cart.totalItems  %></span></a>
<% } %>`

最新更新