gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 01:58:18 25 4
gpt4 key购买 nike

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

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

并且,当第一次进入网站时,我收到错误“无法读取未定义的属性‘totalItems’”,因为totalItems是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>
<% } %>`

关于javascript - if语句中的Ejs无法读取未定义的属性 ' foo ',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50144346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com