为了账号安全,请及时绑定邮箱和手机立即绑定

NodeJS MongoDB崩溃“参数必须是对象”

NodeJS MongoDB崩溃“参数必须是对象”

狐的传说 2022-06-09 16:25:56
当我运行我的服务器并将表单昵称发送到数据库时,我的程序崩溃了!它告诉我这是因为它需要成为一个对象。如果我将 req.body.pickname 更改为 req.body ,它运行良好,但是我需要保存的数据不会被保存。有没有办法把它变成一个对象,或者让它工作?服务器.jsvar mongoose = require("mongoose");var bodyParser = require("body-parser");var express = require("express");var app = express();app.use(bodyParser.json());app.use(bodyParser.urlencoded({extended: true}));var PORT = 45050;app.use("/", express.static(__dirname));mongoose.Promise = global.Promise;mongoose.connect("mongodb://localhost/thisworks", {    useNewUrlParser: true});var gameSchema = new mongoose.Schema({    nickname: String});var User = mongoose.model("wowww", gameSchema);app.post("/addname", (req, res) =>{    var playerNickname = new User(req.body.pickname);    playerNickname.save()    .then(item => {        console.log("nickname created " + req.body.pickname);    })    .catch(err => {        res.status(400).send("unable to save to database");        console.log("error baby!");    });});app.listen(PORT, function () {    console.log("server is up and running using port " + PORT)});索引.html<form method="post" action="/addname">    <h1 class="center-align"> <input id="pickName" class="center-align" type='text' name='pickname' placeholder='Nickname' required> </h1>    <h1 class='center-align'><input id='rea2dy' value=" Ready >" type='submit'></h1>                </form>如果有帮助,这就是我得到的错误。
查看完整描述

2 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

const express = require('express');

var mongoose = require('mongoose');

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

var morgan = require('morgan');

var cors = require('cors')

const app = express();


// CORS Middleware

app.use(cors());

// Logger Middleware

app.use(morgan('dev'));

// Bodyparser Middleware

app.use(bodyParser.json());



const MongoClient = require('mongodb').MongoClient;

const uri = "uri";

const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

client.connect(err => {

  console.log('MongoDB Connected...')

  const collection = client.db("dbname").collection("collectionname");


  app.post('/name', (req, res) => {

    collection. insertOne({ name: req.body.name })

    res.send("data added")

  });


});


const port = process.env.PORT || 5000;


app.listen(port, function () {

  console.log(`Example app listening on port ${port}`);

});


查看完整回答
反对 回复 2022-06-09
?
慕后森

TA贡献1802条经验 获得超5个赞

这似乎可行,以防将来有人遇到同样的问题。我使用 mongodb 而不是 mongoose 要求


但是如果你有一个适用于猫鼬的解决方案,请发布它:)


var mongoose = require("mongoose");

var bodyParser = require("body-parser");

var express = require("express");

var app = express();



var PORT = 3332;


app.use("/", express.static(__dirname));

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({extended: true}));



mongoose.connect("mongodb://localhost/thisworks", {

    useNewUrlParser: true

});

   var db = mongoose.connection;

   db.once('open', function(cb) {

   console.log("connection established");

})



app.post("/addname", (req, res) =>{

    var name = req.body;

    var data = {

        "nickname": name

    }

    db.collection('wowww').insertOne(data, function(err, coll) {

        if(err) throw err;

        console.log('rec estab');

    });


});







app.listen(PORT, function () {

    console.log("server is up and running using port " + PORT)

});


查看完整回答
反对 回复 2022-06-09
  • 2 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号