【发布时间】:2020-01-23 01:54:55
【问题描述】:
我的项目是电子商务网站时遇到问题,当用户登录页面并下订单时,它被添加到购物车中,但是当另一个用户唱歌时,他可以看到订单其他用户的。
它添加到集合订单中的订单以及它与产品集合和凭据一起存储的集合(同一数据库)
我知道我必须将信息添加到 cookie 会话中,这样只有用户才能看到他的购物车,在浏览了一段时间 npm connect-mongodb-session 之后,但是并尝试使用 req 直接添加信息 oa cookie。 cookie,我对 cookie 还很陌生。
您可以在下面看到该页面的 get.post 的数据库架构,并使用新订单将其添加到集合中。
const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const session = require("express-session");
const cookieParser = require("cookie-parser");
const MongoDBStore = require('connect-mongodb-session')(session);
var app = express();
var store = new MongoDBStore({
uri: "mongodb+srv://<user><password>@cluster0-
okw4h.mongodb.net/productosDB",
collection: "orders"
});
app.use(express.static("public"));
app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(cookieParser());
store.on('error', function(error) {
console.log(error);
});
app.use(session({
secret: "Our little secret.",
cookie: { expires : new Date(Date.now() + 360000) },
store: store,
resave: false,
saveUninitialized: false
}));
mongoose.connect("mongodb+srv://<user><password>@cluster0-
okw4h.mongodb.net/productosDB",
{useNewUrlParser: true});
const orderSchema = {
amount: Number,
name: String,
price: Number,
total: Number
};
app.post("/cambio", function(req, res) {
var inputValue = req.body.vote;
if (inputValue == "add") {
var cantidad = req.body.option;
var name = productName.name;
var price = productName.price;
totalPrice = cantidad * price;
const order = new Order ({
amount: cantidad,
name: name,
price: price,
total: totalPrice
});
res.redirect("/cambio");
}
});
【问题讨论】:
-
你如何区分用户的订单,在订单集合中添加用户 ID 并根据用户 ID 查找所有订单,仅显示该用户的订单。
标签: node.js mongodb express cookies mongoose