Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何修复.save不是NodeJs中mongoose的函数_Node.js - Fatal编程技术网

Node.js 如何修复.save不是NodeJs中mongoose的函数

Node.js 如何修复.save不是NodeJs中mongoose的函数,node.js,Node.js,我正在编写一小段平均堆栈代码,在mongo数据库中添加一个post。我创建了这个模式,当我尝试为我的帖子使用.save()时,它抛出了一个错误 post.save不是一个函数 这是我的模式 const mongoose = require('mongoose'); const postSchema = { title : {type :String, require : true}, content : {type : String, default :'No Content

我正在编写一小段平均堆栈代码,在mongo数据库中添加一个post。我创建了这个模式,当我尝试为我的帖子使用.save()时,它抛出了一个错误

post.save不是一个函数

这是我的模式

const mongoose =  require('mongoose');

const postSchema = {
    title : {type :String, require : true},
    content : {type : String, default :'No Content'}
}

module.exports=mongoose.model('Post',postSchema);
这是我的app.js

const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');


const app = express();


mongoose.connect('mongodb+srv://venkatmokka:z0L7qSALBehoNPlT@cluster0-vr2p5.mongodb.net/mean-stack?retryWrites=true',{ useNewUrlParser: true })
    .then(()=>{
        console.log('Connected successfully');
    })
    .catch(()=>{
        console.log('Connection failed');
    });
app.use(bodyParser.json());

app.use((req,res,next)=>{
    res.setHeader('Access-Control-Allow-Origin','*');
    res.setHeader('Access-Control-Allow-Headers','Origin, X-Requested-With, Content-Type, Accept');
    res.setHeader('Access-Control-Allow-Methods','GET,POST,DELETE,OPTIONS');
    next();
});

app.post('/api/posts',(req,res,next)=>{
    const post = req.body;
    console.log(post);

    // Save code that's throwing an error
    post.save();

    res.status(201).json({
        message : 'Post Added Successfully..!!!'
    });
});

app.get('/api/posts',(req,res,next)=>{

    posts = [{id:'1',title:'Post1',content:'This is post1'},
            {id:'2',title:'Post2',content:'This is post2'}
            ];
res.json({
    message : 'posts fetched successfully..!!',
    posts : posts
});
});


module.exports = app;
这是我的server.js

  const app = require("./backend/app");
  const debug = require("debug")("node-angular");
  const http = require("http");

  const normalizePort = val => {
    var port = parseInt(val, 10);

    if (isNaN(port)) {
      // named pipe
      return val;
    }

    if (port >= 0) {
      // port number
      return port;
    }

    return false;
  };

  const onError = error => {
    if (error.syscall !== "listen") {
      throw error;
    }
    const bind = typeof port === "string" ? "pipe " + port : "port " + port;
    switch (error.code) {
      case "EACCES":
        console.error(bind + " requires elevated privileges");
        process.exit(1);
        break;
      case "EADDRINUSE":
        console.error(bind + " is already in use");
        process.exit(1);
        break;
      default:
        throw error;
    }
  };

  const onListening = () => {
    const addr = server.address();
    const bind = typeof port === "string" ? "pipe " + port : "port " + port;
    debug("Listening on " + bind);
  };

  const port = normalizePort(process.env.PORT || "3000");
  app.set("port", port);

  const server = http.createServer(app);
  server.on("error", onError);
  server.on("listening", onListening);
  server.listen(port);

当我尝试不使用.save()函数时。帖子成功地从服务器端获取到角度端,并显示在其他组件中(该组件创建write以显示输入的帖子。但是,在使用save方法时,帖子甚至不会从服务器端显示)

您需要创建一个新的Post模型来调用函数save。文件可以找到

app.post('/api/posts',(req,res,next)=>{
  const post = req.body;
  console.log(post);

  var postModel = new Post(post);
  postModel.save(function (err, newPost) {
    if (err) {
    } else {
      //Save ok
      res.status(201).json({
        message : 'Post Added Successfully..!!!'
      });
    }
  });
});