gpt4 book ai didi

javascript - ES6 Node.js/Express.js 模型对象的唯一主键

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:40 25 4
gpt4 key购买 nike

在 Node.js/Express.js 应用中,需要对下面的 ES6 AppUser 模型对象进行哪些具体更改,以便 name 主键始终是唯一的?

作为上下文,用户由单独的 OAuth2 授权服务器进行身份验证,因此这个特定的客户端 Node.js/Express.js 应用程序永远不会将用户的信息存储在本地数据库中。因此,AppUser 实例将仅存在于内存中,并且将作为用户信息的临时持有者。我们不能依赖像 MongoDB 这样的数据存储来强制执行主键,因为用户不是本地持久化的。

以下是 appuser.js 文件的代码,已添加到 the app/models directory of this GitHub sample app用于测试目的:

'use strict';
module.exports = class AppUser {
constructor(name) {
this.name = name;
}
getName() {
return this.name;
}
getSomeOther() {
return this.someOther;
}
setSomeOther(other) {
this.someOther = other;
}
}

下面是在应用程序其他位置实例化 AppUser 新实例的代码示例:

var AppUser = require("./models/appuser.js");
...
var newUser = new AppUser(uname);

最佳答案

我建议用 vanillia 来解决这个问题。如果您只想检查名称在应用程序执行期间是否唯一,您可以将用于实例化类的名称存储在数组中

'use strict';
var store = []
class AppUser {
constructor(name) {
if (store.indexOf(name) === -1) {
this.name = name;
store.push(name)
}
else {
console.log("warning " + name + " already exists");
return;
}
}
getName() {
return this.name;
}
}

var user1 = new AppUser("marco");
var user2 = new AppUser("raphaello");
var user3 = new AppUser("marco");
console.log(user2.getName());

run :
warning marco already exists
raphaello

当然这只是一个想法,如果这个想法值得保留,抛出异常会比我的返回更好地使实例化中止

关于javascript - ES6 Node.js/Express.js 模型对象的唯一主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38275213/

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