Как добавлять данные к локальному объекту используя POST Request с Node?

Использовать express, чтобы создавать новую коллекцию / таблицу, когда он становится post request, например:

router.post('/lista', (req, res, next) => {

Lista.create(req.body).then((list) => {
    res.send(list)
}).catch(next)

})

Таким создал новый List в "Готовую" таблицу моей базы данных.

Но, и если то, что у меня есть вместо базы данных, является данными, написанными руке в самой папке сервера?

я храню в архиве data.js:

let store = {
  posts: [

    {
      name: 'Top 10 ES6 Features every Web Developer must know',
      url: 'https://webapplog.com/es6',
      text: "This essay will give you a quick introduction to ES6. If you don’t know what is ES6, it’s a new JavaScript implementation.",
      comments: [
        { text: 'Cruel…..var { house, mouse} = No type optimization at all' },
        { text: 'I think you’re undervaluing the benefit of ‘let’ and ‘const’.' },
        { text: '(p1,p2)=>{ … } ,i understand this ,thank you !' }
      ]
    }

  ]
}
module.exports = store;

Это - то, что пришло в голову мне, чтобы создавать нового post в data.js:

const router = require('express').Router();
const data = require('../hard-coded-Data/data')

 router.post('/', (req, res) => {
        data.posts += {
            name: req.body.name,
            url: req.body.url,
            text: req.body.text,
            comments: [
                req.body.comments
            ]
          }.then(() => res.send(data.posts))
    })

Но как он ждал, оно не функционирует.

Он, потому что есть ошибки синтаксиса, и объекты не могут быть изданными так или прямо такая операция не может делаться таким образом так легкомысленно и Он был бы должен использовать например модуль fs node?

Это структура папки проекта:

introducir la descripción de la imagen aquí

Ошибка, которую он возвращает мне:

TypeError: { (intermediate я оценил) (intermediate я оценил) (intermediate я оценил) (intermediate я оценил) } .then is not в function

И это - то, что я перемещаю его, когда я делаю post:

{
"name": "New post",
"url": "https://webapplog.com/es6",
"text": "This essay will give you a quick introduction to ES6. If you don’t know what is ES6, it’s a new JavaScript implementation.",
"comments": [
  {
    "text": "Cruel…..var { house, mouse} = No type optimization at all"
  },
  {
    "text": "I think you’re undervaluing the benefit of ‘let’ and ‘const’."
  },
  {
    "text": "(p1,p2)=>{ … } ,i understand this ,thank you !"
  }
]

}

1
задан 04.11.2019, 19:24
1 ответ

EstГЎs пробуя делать одну operaciГіn очень редкая, что состоит в том, чтобы прилагать элемент в array.

Результат старания прилагать два объекта состоит в том, что каждый объект преобразовывается в string (обычно остается что-то как "[object Object]"), и потом прилагаются два strings.

, Если то, что ты хочешь, aГ±adir элемент в array, использует push:

let data = {
  posts: [
    {
      name: 'Top 10 ES6 Features every Web Developer must know',
      url: 'https://webapplog.com/es6',
      text: "This essay will give you a quick introduction to ES6. If you don’t know what is ES6, it’s a new JavaScript implementation.",
      comments: [
        { text: 'Cruel…..var { house, mouse} = No type optimization at all' },
        { text: 'I think you’re undervaluing the benefit of ‘let’ and ‘const’.' },
        { text: '(p1,p2)=>{ … } ,i understand this ,thank you !' }
      ]
    }

  ]
};

data.posts.push({
  name: 'name',
  url: 'url',
  text: 'text',
  comments: [
      ''
  ]
});
console.log(JSON.stringify(data.posts));

В любом случае, estГЎs надеясь, что operaciГіn он возвращает обещание, потому что ты реализуешь призыв к .then(). Но ни array ни String не обещания, с которым mГ©todo then не estГЎ представил.

Следовательно она soluciГіn простой:

const router = require('express').Router();
const data = require('../hard-coded-Data/data')

router.post('/', (req, res) => {
  data.posts.push({
    name: req.body.name,
    url: req.body.url,
    text: req.body.text,
    comments: [
        req.body.comments
    ]
  });
  //la operacion push es síncrona, no necesitas hacer más
  res.send(data.posts);
});
1
ответ дан 01.12.2019, 12:49