如何保持父表可用

时间:2012-07-23 16:38:49

标签: javascript node.js sequelize.js

我有两个模型:UserPhone

User模型有一个名为Phone_id的字段,其中填充了Phone.id字段。

我正在尝试遍历所有电话并显示电话名称和相关的用户分机号码。

但是,由于回调(我认为),当我到达getUser方法的成功方法时,手机对象已经消失了。

代码如下:

var User = sequelize.import(__dirname + '/../models/User.js');
var Phone = sequelize.import(__dirname + '/../models/Phone.js');

Phone.hasOne(User,{ foreignKey: 'Phone_id'});

Phone.findAll().success(function(phones){
  for (var i = 0; i < phones.length; i++) {
    phones[i].getUser().success(function(user){
      console.log(xxxx.Name, user.Extension);
    });
});

如何在console.log语句中显示电话名称和用户扩展名,我需要用什么来代替xxxx?

谢谢!

2 个答案:

答案 0 :(得分:0)

你想要做的是:

var User = sequelize.import(__dirname + '/../models/User.js');
var Phone = sequelize.import(__dirname + '/../models/Phone.js');

Phone.hasOne(User,{ foreignKey: 'Phone_id'});

Phone.findAll().success(function(phones){
  phones.forEach(function(phone) {
    phone.getUser().success(function(user){
      console.log(phone.Name, user.Extension);
    });
  })
});

答案 1 :(得分:0)

未经测试,但

var User = sequelize.import(__dirname + '/../models/User.js');
var Phone = sequelize.import(__dirname + '/../models/Phone.js');

Phone.hasOne(User,{ foreignKey: 'Phone_id'});

Phone.findAll().success(function(phones){
  phones.forEach(function(phone) {
    phone.getUser().success(function(phone) {
      return function(user){
        console.log(phone.Name, user.Extension);
      }
    }(phone))
  })
});