gpt4 book ai didi

javascript - 如何将模型实例与 ExpressJS、NodeJS 一起使用

转载 作者:行者123 更新时间:2023-12-03 09:04:23 24 4
gpt4 key购买 nike

假设我有一个文件“user.js”,它是我的用户模型。它看起来像:

var user = function(data) {
this.data = data;
}
user.getUserByID = function(data, callback) {
db.get(...., function(data) {
callback(new user(data));
});
}
user.prototype.save = function(data, callback) {
this.data = data;
db.save(...., function(result) {
callback(result);
});
}
module.exports = user;

现在我的路由器有两条路由:

app.get('/profile', function(req, res) {
user.getUserByID(req.user.id, function(user) {
res.someAction(user);
});
});
app.post('/updateProfile', function(req, res) {
user.getUserByID(req.user.id, function(user) {
user.save(req.body.data);
res.someAction(user);
});
});

现在,在这里,当我必须保存用户实例时,我必须再次获取它,这是我不太喜欢的。理想情况下,我希望用户始终可用。另外,旧的用户对象会发生什么?是否有可能以某种方式坚持下去?

组织模型代码的好方法是什么?我正在使用 mysql db 和 node-mysql 包。

最佳答案

您可以将用户对象缓存在 map 中,该 map 以用户 id 作为键,以用户对象作为值。

var userMap = {}
app.post('/updateProfile', function(req, res) {
if userMap[req.user.id] === undefined){
user.getUserByID(req.user.id, function(user) {
user.save(req.body.data);
userMap[req.user.id] = req.body.data
res.someAction(userMap[req.user.id]);
});
}else{
userMap[req.user.id].save(req.body.data);
userMap[req.user.id] = req.body.data
res.someAction(user);
}
})

关于javascript - 如何将模型实例与 ExpressJS、NodeJS 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32227822/

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