gpt4 book ai didi

javascript - 如何在 sails.js Controller 中检索列表/索引 View 的一对一关联?

转载 作者:行者123 更新时间:2023-11-30 06:25:30 28 4
gpt4 key购买 nike

刚开始使用 sails.js - 如何检索与以下模型的一对一关联作为示例?我想我已经处理了单一 View ,但在 ListView 中苦苦挣扎。单独使用 Controller 或为了更灵活地使用服务似乎是可能的,但两种情况下的语法都是我的绊脚石......我不断得到未定义什么都没有 .. .

用户.js

module.exports = {
attributes: {
displayName: {
type: 'string',
unique: true
},
username: {
type: 'string',
required: true,
unique: true
},
email: {
type: 'email',
unique: true
},
password: {
type: 'string',
minLength: 8
},
profile: function(callback) {
Person
.findByUserId(this.id)
.done(function(err, profile) {
callback(profile);
});
},
// Override toJSON instance method to remove password value
toJSON: function() {
var obj = this.toObject();
delete obj.password;
delete obj.confirmation;
delete obj.plaintextPassword;
delete obj.sessionId;
delete obj._csrf;
return obj;
},
}
};

Person.js(如果存在 userId,则用作配置文件)

module.exports = {

attributes: {
userId: {
type: 'string'
},
firstName: {
type: 'string'
},
lastName: {
type: 'string'
},
// Override toJSON instance method to remove password value
toJSON: function() {
var obj = this.toObject();
delete obj.sessionId;
delete obj._csrf;
return obj;
}
}
};

用户 Controller .js

  show: function(req, res) {
var userId = req.param('id');
async.parallel({
profile: function(callback) {
UserService.getProfileForUser(userId, callback);
},
user: function(callback) {
UserService.getUser(userId, callback);
}
},
function(error, data) {
if (error) {
res.send(error.status ? error.status : 500, error.message ? error.message : error);
} else {
data.layout = req.isAjax ? "layout_ajax" : "layout";
data.userId = userId;
res.view(data);
}
});
}

最佳答案

对于两个模型之间的一对一关联,您不需要编写自己的自定义函数;它内置于 Sails 中。查看Sails docs了解更多详情。

用户.js

module.exports = {
...,
profile: {
model: person;
},
...
}

Person.js

module.exports = {
...,
user: {
model: 'user'
},
...
}

用户 Controller .js

show: function(req, res) {
var userId = req.param('id');
User.findOne(userId).populate('profile').exec(function (err, user) {
if (error) {
res.send(error.status ? error.status : 500, error.message ? error.message : error);
} else {
var profile = user.profile;
var data = { user: user, profile: profile };
data.layout = req.isAjax ? "layout_ajax" : "layout";
data.userId = userId;
res.view(data);
}
});
}

关于javascript - 如何在 sails.js Controller 中检索列表/索引 View 的一对一关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21417952/

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