嘿,我对Sails有点陌生。我已经启用了REST api,不,我只是简单地使用发布请求主体的主体来创建数据,而无需控制器的干预。
我定义了两个模型-用户和call_log。每当我的应用程序中发生一个事件时,我都希望该事件触发users表中用户值的更改,但我也想在调用日志表中创建一个日志。
我正在使用afterCreate()
生命周期方法,并尝试使用create()
来将我的数据写入第二张表。我似乎没有任何错误,但是没有任何内容写入dB。
我的User.js(模型)
module.exports = {
attributes: {
username: {type: 'string', required: true},
country: {type: 'string'},
},
afterCreate: function (valuesToSet, proceed) {
Talk_log.create({
uid: 'myuid',
partner_uid: 'mypartnerid',
action: 'yeahhh'
}).fetch();
valuesToSet.password = 1244;
return proceed();
},
};
我的Talk_log.js
module.exports = {
attributes: {
uid: { type: 'string', required: true},
partner_uid: {type: 'string'},
action: {type: 'string'}
},
};
答案 0 :(得分:0)
Documentation说:“ afterCreate生命周期回调将仅在将fetch meta标志设置为true的查询上运行”
因此使用:
User.create().fetch();
Fetch告诉Waterline(和基础数据库适配器)发送回在执行.update()、. create()、. createEach()或.destroy()查询时更新/销毁/创建的记录。
您说afterCreate(),但是在您的代码中是beforeCreate()。解决这个问题。
答案 1 :(得分:0)
我忘记了处理蓝鸟承诺的ball.vx
,只有那时我才能写dB。
float vx0 = vx; // save initial value of vx
vx = (((m_mass- ball.m_mass) *vx) + (2*ball.m_mass*ball.vx)) /(m_mass+ball.m_mass);
ball.vx = (((ball.m_mass-m_mass)*ball.vx) +(2* m_mass*vx0))/(m_mass+ball.m_mass);
^^^