Str*_*ch0 5 mongodb node.js ecmascript-6
我试图创建一个代表用户的类,我希望它继承猫鼬类的方法,该类具有查找,保存,删除等功能。
我试图通过实质上执行以下操作来扩展猫鼬模型: class User extends Mongoose.model('User', UserSchema) {}
我的实际代码如下所示:
import { Mongoose } from '../config';
const Schema = Mongoose.Schema;
const UserSchema = new Schema({
email: { type: String, default: '' },
firstName: { type: String, default: '' },
lastName: { type: String, default: '' },
facebookId: { type: String, default: '' },
payments: { type: Array, default: [] }
});
const MongoUser = Mongoose.model('User', UserSchema);
class User extends MongoUser {
constructor(data) {
super();
this.email;
this.firstName;
this.lastName;
this.facebookId;
this.payments;
}
save(){
}
findUser(data){
return new Promise((resolve, reject) => {
super.findOne(data, (err, user) => {
if(err) {
console.log("err", err)
reject({err: err});
}
if(!user) {
console.log("No user found")
reject('No user found');
}
if(user){
console.log("user", user)
console.log("this", this)
this._set(user)
resolve(this);
}
});
})
}
_set(user){
this.email = user.email;
this.firstName = user.firstName;
this.lastName = user.lastName;
this.facebookId = user.facebookId;
this.payments = user.payments;
return;
}
}
export default User;
Run Code Online (Sandbox Code Playgroud)
您将看到我正在尝试调用父类的方法,super.findOne()但是却遇到了[TypeError: Cannot read property 'call' of undefined]使我难堪的错误。
没有堆栈跟踪,但是在以下try / catch中捕获了错误:
exports.findUser = async (req, res) => {
let id = '58ad46dfb558dfe00efa9b02';
const user = new User();
try{
const loggedInUser = await user.findUser({_id: id});
res.send(loggedInUser);
}catch(e){
console.log("e", e)
res.send(e)
}
}
Run Code Online (Sandbox Code Playgroud)
这是从我的路线叫来的:
router.get('/:userID', userController.findUser);
Run Code Online (Sandbox Code Playgroud)
我是在正确的轨道上吗,还是我试图扩展猫鼬模型的方法是正确的?
| 归档时间: |
|
| 查看次数: |
1267 次 |
| 最近记录: |