Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.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
Javascript 无法将数据添加到mongoDB中_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript 无法将数据添加到mongoDB中

Javascript 无法将数据添加到mongoDB中,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我正在使用Mongoose创建一个模式,并试图通过Postman向mongoDB添加数据,它正在向db添加空数据。我假设我的问题是数据从浏览器解析到服务器的方式这里是我的app.js设置 添加到数据库的内容 { "_id" : ObjectId("57846282c7b5f51d4c1742a9"), "__v" : 0 } 这是app.js文件 var express = require('express'); var path = require('path'); var favicon

我正在使用Mongoose创建一个模式,并试图通过Postman向mongoDB添加数据,它正在向db添加空数据。我假设我的问题是数据从浏览器解析到服务器的方式这里是我的app.js设置

添加到数据库的内容

{ "_id" : ObjectId("57846282c7b5f51d4c1742a9"), "__v" : 0 }
这是app.js文件

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var multer  =   require('multer');        
var routes = require('./routes/index');
var mongoose = require('mongoose');
var db = mongoose.connection;
mongoose.connect('mongodb://localhost/growlingRabbit');
var Page = require('./models/growling_rabbit_page_text.js');

var app = express();


// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);


var storage =   multer.diskStorage({
  destination: function (req, file, callback) {
    callback(null, './uploads');
  },
  filename: function (req, file, callback) {
    callback(null, file.fieldname + '-' + Date.now());
  }
});
var upload = multer({ storage : storage}).single('userPhoto');

app.post('/api/photo',function(req,res){
    upload(req,res,function(err) {
        if(err) {
            return res.end("Error uploading file.");
        }
        res.end("File is uploaded");
    });
});

app.post('/api/text',function(req,res){
    var text = new Page();     
        text.name = req.body.name;  

        text.save(function(err) {
            if (err)
                res.send(err);

            res.json({ message: 'Text Added!' });
        });

});



// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});


module.exports = app;
这是模型

var mongoose = require('mongoose');
var Schema       = mongoose.Schema; 
var pageSchema   = new Schema({
    homePage: String,
    communityPage: String,
    eventPage: String,
    contactPage: String,
    galleryPage: String });

module.exports = mongoose.model('Page', pageSchema);;

救命啊,我确信这是一件非常明显的事情,不幸的是我找不到它

你可以用

var text = new Page();     
text.name = req.body.name;
但是您的模式没有
名称
属性。 按如下方式更改您的模式:

var pageSchema = new Schema({
    name: String,
    homePage: String,
    communityPage: String,
    eventPage: String,
    contactPage: String,
    galleryPage: String });

另一个问题可能是使用错误的选项通过邮递员发布数据。
确保在测试节点API时使用
x-www-form-urlencoded


运行此脚本时有错误吗?运行时没有错误。Thx!很遗憾,这并不能解决问题。如果为了测试目的将text.name设置为常量字符串,你能测试它是否保存了一些内容吗?是的,它保存了一个常量。那么你的猜测可能是正确的,因为解析数据时有问题。我用另一个问题更新了答案,我以前在节点API测试中使用Postman时也遇到过这个问题