Схема MongoDB не вставляет свойство при использовании с функцией insertOne - PullRequest
1 голос
/ 06 февраля 2020

Первоначальная проблема была решена, спасибо!

Теперь, когда я вставляю документ, он выглядит так:

{

_id: "5e3b64b6655fc51454548421",
todos: [ ],
title: "title"

}

Это должно выглядеть так, поскольку в схеме " свойство title находится над свойством todos.

{

_id: "5e3b64b6655fc51454548421",
title: "title",
todos: [ ]

}

JavaScript

//project schema
const schema = mongoose.Schema({
    title: String,
    todos: []
});

const Project = mongoose.model('Project', schema);

//add a project
app.post('/addProject', (req, res) => {
    const collection = db.collection('projects')
    const proj = new Project({title: req.body.title});
    collection.insertOne(proj, function(err, results) {
        if (err){
            console.log(err);
            res.send('');
            return
        }
        res.send(results.ops[0]) //retruns the new document
    })
})

Ответы [ 3 ]

3 голосов
/ 06 февраля 2020

Пожалуйста, попробуйте посмотреть код ниже.

const collection = db.collection('projects')
const proj = new Project({projTitle: req.body.projTitle}); //make changes here
2 голосов
/ 06 февраля 2020

Вы вводите неправильный ключ при создании нового объекта Project. Измените его на правильный ключ в соответствии с вашей схемой, и вам будет хорошо go.

//project schema
const schema = mongoose.Schema({
    projTitle: String,
    todos: []
});

const Project = mongoose.model('Project', schema);

//add a project
app.post('/addProject', (req, res) => {
    const collection = db.collection('projects')
    **const proj = new Project({projTitle: req.body.projTitle});** // changes are here
    collection.insertOne(proj, function(err, results) {
        if (err){
            console.log(err);
            res.send('');
            return
        }
        res.send(results.ops[0]) //retruns the new document
    })
})
2 голосов
/ 06 февраля 2020

Вы переименовываете свой ключ в строке ниже:

const proj = new Project({title: req.body.projTitle});

Ваша схема ожидает projTitle, попробуйте изменить ее на:

const proj = new Project({projTitle: req.body.projTitle});

Пн goose схема определяет структуру вашего документа. Всякий раз, когда вы пытаетесь сохранить дополнительное поле, которое не определено в вашей схеме, оно будет просто проигнорировано mon goose.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...