Как добавить значение в элемент массива с помощью коллекции mongoose? - PullRequest
1 голос
/ 30 мая 2019

Я написал следующую функцию mongoose для создания нового документа в mongodb

createdata: (body) => {
    let sEntry = new SData(Object.assign({}, {
        dataId: body.DataId
       //,
       //notes.message: body.message   
    }));
    return sEntry.save();
}

Здесь sData схема включает в себя notes схему массива внутри нее.

Я не могудобавьте значение к message в notes [], используя notes.message: body.message

Мое определение схемы выглядит следующим образом:

var nSchema = new Schema({
    _id: {type:ObjectId, auto: true },
    message: String
});

var sSchema = new Schema({
    _id: {type:ObjectId, auto: true },
    dataId: { type:String, unique: true },
    notes: [nSchema]
}

Я также хочу отметить, что для каждого dataId может бытьнесколько notes [] записей.Однако SData может иметь только уникальную запись строки для каждого dataId.

. Я хочу, чтобы примечания были массивом в коллекции SData.Как этого добиться, не создавая отдельную коллекцию notes?Как мне изменить createdata, чтобы учесть все данные требования.

1 Ответ

0 голосов
/ 30 мая 2019

Используйте references для сопоставления других коллекций и используйте populate при получении

Схема проектирования

var sSchema = new Schema({
    _id: {type:ObjectId, auto: true },
    dataId: { type:String, unique: true },
    notes: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'nSchema',
    }]
}

Добавление данных

createdata: (body) => {
    let sEntry = new SData({
        dataId: body.DataId,
        notes: [nSchemaIds]
    });
    return sEntry.save();
}
...