Javascript 使用Mongoose将数组(';标记';)保存到MongoDB
我在玩猫鼬游戏,我在保存到阵列时遇到了问题。例如,我在页面上有一个输入字段,用于逗号分隔的标记。我从req.body.tags中获取这些标签,去掉空白,然后用逗号将它们分割,得到一个标签数组。现在,如何将此数组保存回数据库?我猜我把模式的这一部分设置错了,但老实说,我不确定什么是对的。到目前为止,我的模式是:Javascript 使用Mongoose将数组(';标记';)保存到MongoDB,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我在玩猫鼬游戏,我在保存到阵列时遇到了问题。例如,我在页面上有一个输入字段,用于逗号分隔的标记。我从req.body.tags中获取这些标签,去掉空白,然后用逗号将它们分割,得到一个标签数组。现在,如何将此数组保存回数据库?我猜我把模式的这一部分设置错了,但老实说,我不确定什么是对的。到目前为止,我的模式是: var postSchema = mongoose.Schema({ title: String, permalink: String, content: String,
var postSchema = mongoose.Schema({
title: String,
permalink: String,
content: String,
author: {
id: String,
name: String,
},
postDate: {
type: Date,
default: Date.now
},
});
如果我要保存标记(例如,从一篇文章中),那么最好有一个名为tags的数组,然后每个标记都有一个名称(和id?)?如果是这样的话,我会在模式中添加如下内容吗?将标签添加到帖子的想法是,我可以在帖子上显示它们(作为链接),并能够在数据库中搜索具有特定标签的所有帖子。这样做对吗
tags: [{
name: String,
id: String
}]
当投递到新的投递路线时,我将执行以下操作:
post = new Post(req.body);
tags = req.body.tags.replace(/\s/g,'').split(',');
// maybe post.tags = tags ?
post.save(function(err) {
if (!err) {
res.redirect('/posts');
} else {
...
}
});
这成功保存了提交的所有其他字段(标题、作者、内容等),但我不确定如何将新创建的标记保存回数据库。这里的任何建议都是非常受欢迎的,因为我对这一点还不熟悉,并且渴望继续学习。谢谢 如果确实希望“标记”数组具有名称字段和生成的\u id
字段,请定义另一个架构并将其嵌入:
var tagSchema = mongoose.Schema({
name: String
});
var postSchema = mongoose.Schema({
title: String,
permalink: String,
content: String,
author: {
id: String,
name: String,
},
postDate: {
type: Date,
default: Date.now
},
tags: [tagSchema]
});
然后在创建Post
对象之前,将输入操作到正确的结构:
req.body.tags = req.body.tags.replace(/\s/''/g).split(",").map(function(tag) {
return { "name": tag };
});
var post = new Post(req.body);
或者将其保留为一个普通字符串数组:
var postSchema = mongoose.Schema({
title: String,
permalink: String,
content: String,
author: {
id: String,
name: String,
},
postDate: {
type: Date,
default: Date.now
},
tags: [String]
});
不必担心映射对象属性:
req.body.tags = req.body.tags.replace(/\s/''/g).split(",");
var post = new Post(req.body);
尼尔,谢谢你(接受的)回答。我不知道您可以嵌入另一个架构。它工作得很好,但我必须使用
.replace(/\s/g',)
。等等,您不能用ObjectID代替整个架构吗?