我试图理解为使用 Mongoose 模型制作自己的 API 是否有意义?
假设我们有一个简单的 Mongoose 用户模型:
var UserSchema = new mongoose.Schema({
email: { type: 'string', required: true, unique: true, lowercase: true },
password: { type: 'string', required: true },
name: {type: 'string'}
});
var UserModel = mongoose.model('User', UserSchema);
对于一个抽象的应用程序,用户模型应该有诸如'create'、'delete'、'update'、'find'、'authenticate'等方法。所以我有两种方法来实现这个目的:
将这些方法包含到 Mongoose 模型中,如下所示:
UserSchema.static('create', function (data, callback) { var user = new User(data); user.save(function (err) { if (err) return callback(err); return callback(null, user); }); });
在自定义 User 类中包装一个方法,如下所示:
UserProvider = function(){}; UserProvider.prototype.create = function(data, callback) { var user = new User(data); user.save(function (err) { if (err) return callback(err); return callback(null, user); }); };
在第一个中,我可以像这样创建一个新用户:
UserModel.create({name: 'test'}, function (err, user) {
if (err) {// do something}
});
在第二个中,我可以创建一个新的类似:
var userProvider= new UserProvider();
userProvider.create({name: 'test'}, function (err, user) {
if (err) {// do something}
});
虽然这些方法看起来很相似,但我觉得我需要选择在未来不会破坏 Mongoose API。
请告诉我哪种方法更适合猫鼬模型?