gpt4 book ai didi

javascript - Sails.js 通过外键查询数据库

转载 作者:行者123 更新时间:2023-11-30 10:01:51 27 4
gpt4 key购买 nike

我想知道如何使用默认的 Waterline 模型通过外键进行查询。

我有两个模型 Post 和 Category - Post 有一个外键类别。我需要这样查询:

Post.find({
where: {
category: query
}
}).exec(function (err, data) {});

在这种情况下,query 是一个字符串,因此返回的结果应该是包含搜索类别的帖子。

执行此操作的最佳方法是什么?

注意:当前示例不起作用

最佳答案

你的模型应该是

// Post
module.exports = {
attributes: {
name: {
type: 'string'
},
category: {
model: 'category'
}
}
};

// Category
module.exports = {
attributes: {
name: {
type: 'string'
},
post: {
collection: 'Post',
via: 'category'
}
}
};

然后来自类别的查询将是

Category
.find()
.where({ name: query })
.populateAll()
.exec(function (error, categories) {
var catArr = [];

if (categories.length) {
categories.map(function (item) {
catArr.push(item.id);
});
}

Post.find().where({ category: catArr }).exec(function (error, posts) {
// do stuff
});

});

或者您可以通过post

查询它
Post
.find()
.where({ category: categoryId })
.populateAll()
.exec(function (error, posts) {
// posts is all post with category that defined
});

如果您想从post 查询它,请确保您知道categoryId。我通常使用 categoryId is string 并从 name 中进行 slugify,因此我可以通过名称查询类别并确保类别名称(以及 ID当然)是独一无二的。

关于javascript - Sails.js 通过外键查询数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31170394/

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