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

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

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

以下是appuser.js文件的代码,该文件已添加到此GitHub示例应用程序的app/models目录中用于testing目的:

 '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); 

我build议找出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 

当然,这只是一个想法,如果这个想法值得保留,抛出一个例外情况会更好,使实例夭折比我的回报