Mongodb - 创建现有集合字段数组的条目

问题描述 投票:0回答:1

所以我有一个问题,我的var array添加一个新的章节,我将如何去做这将是我必须这样做:

array.push({
            chapter: [
                {
                    id: 2,
                    title: 'adsf',
                    content: '',
                    authorNotes: 'asdf'
                }
            ]
        });

RiTest.ts

import * as mongoose from 'mongoose';

const Scheme = mongoose.Schema;

export const RiTestScheme = new Scheme({
    novelName: String,
    novelAuthor: String,
    novelCoverArt: String,
    novelTags: Array,
    chapters: [
        {
            id: Number,
            title: String,
            content: String,
            authorNotes: String
        }
    ]
});

export class RiTestController {
    public addChapter(callback: (data) => void) {
        var chapterInfoModel = mongoose.model('ChaptersTest', RiTestScheme);

        var array = [
        {
            chapter: [
                {
                    id: 0,
                    title: 'prolog',
                    content: 'conetntt is empty',
                    authorNotes: 'nothing is said by author'
                },
                {
                    id: 1,
                    title: 'making a sword',
                    content: 'mine craft end chapter',
                    authorNotes: 'nothing'
                }
            ]
        }
    ];

        let newChapterInfo = new chapterInfoModel(array);

        newChapterInfo.save((err, book) => {
            if (err) {
                return callback(err);
            } else if (!err) {
                return callback(book);
            }
        });
    }
}

这不起作用,var array没有保存到let newChapterInfo = new chapterInfoModel(array);我想要做什么添加另一章array.chapter但数组不会在chapterInfoModel()中得到识别我将如何修复此数组并将数组添加到数组中在此现有集合中创建一个新条目

感谢您抽出宝贵时间回答我的问题。

arrays node.js mongodb typescript
1个回答
1
投票

您正在尝试将文档数组插入到集合中,这是因为它没有插入到您的集合中。

Document.prototype.save()将只根据您的定义在您的收藏中插入一个文档。所以在这里插入chapter是下面的代码,

//array as Object
var array = {
    chapter: [
        {
            id: 0,
            title: 'prolog',
            content: 'conetntt is empty',
            authorNotes: 'nothing is said by author'
        },
        {
            id: 1,
            title: 'making a sword',
            content: 'mine craft end chapter',
            authorNotes: 'nothing'
        }
    ]
};

//Push to your chapter array
array.chapter.push({
    id: 2,
    title: 'adsf',
    content: '',
    authorNotes: 'asdf'
});

let newChapterInfo = new chapterInfoModel(array);
© www.soinside.com 2019 - 2024. All rights reserved.