Sails.js 是一个基于 Node.js 的 MVC 框架,用于构建实时应用程序。在 Sails.js 中,模型关联允许您在不同的数据表之间建立关系,从而使您能够更轻松地查询和操作数据。
在 Sails.js 中,有以下几种类型的模型关联:
一对一关联是指一个模型与另一个模型之间存在唯一关系。例如,一个用户和一个用户档案之间的关系。
要在 Sails.js 中创建一对一关联,请在模型定义中使用 hasOne
和 belongsTo
方法:
// User.js
module.exports = {
attributes: {
profile: {
model: 'profile'
}
}
};
// Profile.js
module.exports = {
attributes: {
user: {
model: 'user'
}
}
};
一对多关联是指一个模型与另一个模型的多个实例之间存在关系。例如,一个作者和多个文章之间的关系。
要在 Sails.js 中创建一对多关联,请在模型定义中使用 hasMany
和 belongsTo
方法:
// Author.js
module.exports = {
attributes: {
articles: {
collection: 'article',
via: 'author'
}
}
};
// Article.js
module.exports = {
attributes: {
author: {
model: 'author'
}
}
};
多对多关联是指一个模型的多个实例与另一个模型的多个实例之间存在关系。例如,一个学生和多个课程之间的关系。
要在 Sails.js 中创建多对多关联,请在模型定义中使用 manyToMany
方法:
// Student.js
module.exports = {
attributes: {
courses: {
collection: 'course',
through: 'studentcourse'
}
}
};
// Course.js
module.exports = {
attributes: {
students: {
collection: 'student',
through: 'studentcourse'
}
}
};
// StudentCourse.js
module.exports = {
attributes: {
student: {
model: 'student'
},
course: {
model: 'course'
}
}
};
在 Sails.js 中,您可以使用 populate
方法查询关联数据。例如,要查询一个用户及其关联的用户档案,您可以这样做:
User.findOne({ id: userId }).populate('profile').exec((err, user) => {
if (err) {
console.error(err);
} else {
console.log(user.profile);
}
});
同样,要查询一个作者及其关联的文章,您可以这样做:
Author.findOne({ id: authorId }).populate('articles').exec((err, author) => {
if (err) {
console.error(err);
} else {
console.log(author.articles);
}
});
领取专属 10元无门槛券
手把手带您无忧上云