gpt4 book ai didi

arrays - sails.js Waterline 保存、读取、解析列表或数组

转载 作者:太空宇宙 更新时间:2023-11-04 00:56:58 25 4
gpt4 key购买 nike

在 Sails Waterline 中创建、读取和解析列表的正确方法是什么?

我在 Stack Overflow 或 Waterline Github 上找不到任何内容。

准确地说,我想在创意模型中保存标签列表,然后能够通过标签进行搜索。

想法模型:

attributes: {
tags: {
type: 'string'
}
}

创建函数(标签作为以逗号分隔的字符串传递)

create: function (req, res, next) {
tags: req.param('tags').split(',');

Idea.create(tags, function ideaCreate(err,idea) {
//do stuff after create
});
},

这成功存储了标签:即 `tags = ['tag1', 'tag2', ..., 'tagN']

我尝试过 .find .where 的时髦组合,但没有成功。

简单版本:如何返回某些用户请求的想法 tagX

更难的版本:如何从标签列表中返回至少具有一个标签的任何创意?

最佳答案

选项一

我建议您为您的标签创建一个模型

attributes: {
ideas: {
collection: 'idea'
},

name: {
type: 'string'
}
}

接下来,编辑您的Idea模型以引用您的Tag模型

attributes: {
tags: {
collection: 'tag'
},

name: {
type: 'string'
}
}

然后要获取与“tagX”相关的所有想法,您需要执行以下操作:

var tag = "tagX";
// This same code should also work with an array,
// but then you will have to use find instead of findOne
// var tag = ["tagX", "tagY", "tagZ"]

Tag.findOne({name: tag}).populate('ideas').then(function (tag) {
// Do anything you want with the Ideas.
tag.ideas.forEach(function(idea) {
console.log(idea);
});
}).catch(console.err);

使用标签“tagX”和“tagY”创建想法“Some Grand Idea”在集合中添加和删除标签非常容易。

Promise.all([Idea.create({ name: 'Some Grand Idea'}),
Tag.create({ name: 'TagX'}),
Tag.create({ name: 'TagY'})]).
spread(function (idea, tagX, tagY) {
// Add tagX
idea.tags.add(tagX.id);
// Add tagY
idea.tags.add(tagY.id);
// To remove a tag, simply call remove
// idea.tags.remove(1)
idea.save(console.log);
}).catch(console.log);

总而言之,获得一个创意模型。并向 Idea.tags 集合添加/删除 Tag 模型。这是双向的,即您可以获得一个 Tag 模型并向 Tag.ideas 集合添加一个想法 tag.ideas.add(someIdea.id) 并且它的工作原理是相同的。

选项二

或者,按照您设置的方式使用 Idea 模型。

通过一些标签获取想法:

Idea.find({ tags: { 'like': '%tagX%' }})

通过标签列表获取想法:

Idea.find({
or : [
{ tags: { 'like': '%\'tagX\'%' } },
{ tags: { 'like': '%\'tagY\'%' } },
{ tags: { 'like': '%\'tagZ\'%' } }
]
})

关于arrays - sails.js Waterline 保存、读取、解析列表或数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29335946/

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