gpt4 book ai didi

node.js - 如何访问模型方法?

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:58 26 4
gpt4 key购买 nike

我有一个如下所示的用户:

User = sequelize.define('user', {},{
classMethods: {
register: (params) => {
var user = User.build(),
fbprofile = userAttributes.build({name: 'fbprofile', value: params.fbprofile}),
afterAllResolved = (results) =>
{
return results[0]
.addUserAttributes([
results[1]
]);
};

user.save();
fbprofile.save();

return sequelize.Promise.all([user, fbprofile])
.then(afterAllResolved);

},
show: () => {
this.getUserAttributes()
.then((attributes) => {
return {
user: user,
attributes: attributes
};
});
}
...

我尝试这样做:

app.get('/user/create',
(req, res) => {
User.register(req.query)
.then((user) => {
console.log(user.show);
res.json('done');
});
}

由于某种原因 user.show 未定义,为什么?我希望它是一种方法。我可以在 show 中使用“this”来引用对象的当前实例吗?

最佳答案

我注意到的一些事情:

user.save();
fbprofile.save();

return sequelize.Promise.all([user, fbprofile])
.then(afterAllResolved);

这似乎不对:userfbprofile 都是模型实例,而不是 promise 。我想你想要这个:

return sequelize.Promise.all([ user.save(), fbprofile.save() ])
.then(afterAllResolved);

其次,您将 show 声明为类方法;换句话说,您可以将其用作 User.show(),但不能用作 user.show()。为此,您需要将其声明为实例方法:

instanceMethods : {
show: function() {
return this.getUserAttributes() // return this promise!
.then((attributes) => {
return {
user : this, // `user` isn't defined here, I assume it's `this`
attributes : attributes
};
});
}
}

关于node.js - 如何访问模型方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38051155/

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