当前位置: 首页 > 知识库问答 >
问题:

保存Mongoose架构上的数组属性

单于钊
2023-03-14

我有一个mongoose对象模式,看起来类似于以下内容:

var postSchema = new Schema({
   imagePost: {
     images: [{
        url: String,
        text: String
     }]
 });

我试图创建一个新的职位使用以下内容:

var new_post = new Post();
new_post.images = [];
for (var i in req.body.post_content.images) {
  var image = req.body.post_content.images[i];
  var imageObj = { url: image['url'], text: image['text'] };
  new_post.images.push(imageObj);
}
new_post.save();

但是,一旦我保存了文章,它就会被创建为带有images属性的空数组。我做错了什么?

共有2个答案

贺季同
2023-03-14

我刚刚做了类似的事情,在我的情况下,附加到一个现有的集合,请参阅这个问题/答案。它可能会帮助你:

Mongoose/MongoDB—使用预定义模式附加到文档对象数组的简单示例

您的问题是在Mongoose中不能有嵌套对象,只能有嵌套模式。因此,您需要这样做(针对您想要的结构):

var imageSchema = new Schema({
    url: {type:String},
    text: {type:String}
});

var imagesSchema = new Schema({
    images : [imageSchema]
});

var postSchema = new Schema({
    imagePost: [imagesSchema]
});
黄弘盛
2023-03-14

新对象中缺少架构的imagePost对象。请尝试以下方法:

var new_post = new Post();
new_post.imagePost = { images: [] };
for (var i in req.body.post_content.images) {
  var image = req.body.post_content.images[i];
  var imageObj = { url: image['url'], text: image['text'] };
  new_post.imagePost.images.push(imageObj);
}
new_post.save();
 类似资料:
  • 我不能使用将字符串数组保存到我的数据库中。 (请注意,为了便于编写,下面的所有代码都被简化了) 因此,我声明了person模式的一个变量: 模式本身看起来像: 说到储蓄,它只是一个简单的问题: 所以使用邮递员,我在体内发送一个数组-然而每次我检查数据库,它只是显示一个条目与数组作为一个整体,即我如何发送它: 你知道我应该多做些什么吗?

  • 在我的模式文件中,我试图将类型属性设置为数组。正如这里所见 尽管出于某种原因,当我试图保存文档时,它会将文档保存为字符串,即使它是数组中的元素,它仍会返回字符串。这是我保存文档的代码; 这是在网站中查看的猫鼬模式https://i.stack.imgur.com/TACoo.png 我在mongoose方面不是最棒的,但是,我确信有些事情发生了,但是我没有将文档保存到任何其他地方,而是仍然保存一个

  • 我有两个收藏,一个是用户,另一个是猫。我想要猫的数据下我的用户集合。但我没有得到。 user.js

  • 问题内容: 目前,我有两个几乎相同的架构: 和 它们的唯一区别在于验证:用户不需要名字,姓氏或电话。但是,管理员必须定义这些属性。 不幸的是,上面的代码不是很干,因为它们几乎相同。因此,我想知道是否有可能基于。例如: 显然,这只是伪代码。这样的事情可能吗? 另一个非常相似的问题是,是否有可能基于另一个创建新的架构,并为其添加更多属性。例如: 问题答案: 在其他地方,有人建议使用utils.inhe

  • 假设我在另一个模式(项目)中有一个嵌套的模式(邀请),当试图保存邀请对象时,我想检查项目模式中的父属性“启用”是否设置为true或false,然后允许该人保存邀请对象到邀请数组。显然,this.enabled不起作用,因为它试图从邀请函模式中获得它,邀请函模式不存在。如何让父架构上的启用属性进行验证? 有什么想法吗?感谢任何帮助!

  • 我正在学习一个教程,但在一个点上卡住了。我尝试在邮递员中发出一个POST请求,但返回一个我无法解决的错误。错误如下: (节点:3224)UnhandledPromiseRejectionWarning:MongooseError:操作缓冲在10000ms超时后超时。(C:\users\murad\desktop\full stack\node\node_modules\mongoose\lib\d