Bazı soyutlamalara ihtiyacım olan bir uygulama geliştiriyorum.Mongoose kullanarak soyutlama sınıfı
Orada demek istediğim, somut sınıflarımın içinde bir sözleşme oluşturmak gibi bir arayüz davranışını “simüle etmek” istiyorum.
Aslında Kullanıcılar ile uğraşan, ben uygulanan sözleşme ile bir UserMongoRepository sınıfını yaşıyorum:
- getAll() vaadi
- GetById (id) tarafından kullanıcıların tam listesini döndürür ilgili kullanıcıyı döndürür vs vaat
- kullanıcıyı kaydeder (kullanıcı) tasarrufu vaat
- ...
tarafından aynı bana sahip UserMysqlRepository içinde uygulanan thods (bir değişiklik gerektiğinde davranışı değiştirmeme izin veriyor.
Sorun
Sorunum ama daha aktif bir plak gibi, bir datamapper gibi hareket etmez Gelincik uğraşıyorum olmasıdır.
O save (kullanıcının) benim uygulaması aşağıdaki gibi biraz garip olurdu anlamına gelir:
save(user){
let mongooseUser = this.convert(user);
return user.save();
}
dönüştürme yöntemi bana belirli Gelincik modeline standart Modeli geçiş sağlar. Yine, tüm uygulama veri erişimimi yeniden yazmak zorunda kalmama ve yeniden soyutlamaya izin verir. Standart bir şekilde
import MongooseUser from '../../auth/mongooseModel/MongooseUser';
/**
* UserMongoRepositoryclass
*/
export default class UserMongoRepository{
/**
* Create an UserMongoRepository
*/
constructor(){
}
/**
* Convert a User to a MongooseUser
*/
convert(user){
return new MongooseUser({email:user.mail,password:user.password,firstname:user.firstName, lastname:user.lastName});
}
findById(id){
return MongooseUser.find({id:id});
}
save(user){
return user.save();
}
}
, benim yapıcı içinde benim DAO enjekte ederdi ve onu alay etmek mümkün: Ben birimine denemek benim tam sınıfını test ederken
Gerçek bir sorundur.
Firavun durumunda, bu biraz rahatsız edici, çünkü işi yapan eleman bir örneklenmiş nesne (alay edebilmem için) değil, ancak belgenin en üstünde içe aktarılan bir sınıf tanımıdır.
Çözümler
Ben yapıcı içinde bir parametre olarak MongooseUser sınıf tanımını geçerlerse?
Ben dönüştürme yönteminin içine bu kodu olacak ima:
let user = new this.MongooseUser({})
veri mapper şekilde soyut firavunfaresi davranışına, iyi bir fikrin var mı? Söylediğin olsa
bu benim duygusu, NodeJS ile en gelişmiş birinde, var, başka modülü kullanmak istemiyorum ...
sağ – CreasolDev
Şimdilik, mongoose kullandığınız açıklığa kavuşturmak için, Kullanıyorum, evet – mfrachet
Atm'a gitmeliyim, ama size yakında bir cevap vereceğim;) – CreasolDev