簡體   English   中英

NodeJS MongoDB 崩潰“參數必須是對象”

[英]NodeJS MongoDB crashing "Parameter must be object"

當我運行我的服務器並將表單昵稱發送到數據庫時,我的程序崩潰了! 它告訴我這是因為它需要是一個對象。 如果我將 req.body.pickname 更改為 req.body,它運行良好,但是我需要保存的數據沒有被保存。 有沒有辦法把它變成一個對象,或者讓它起作用?

服務器.js

var 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>

如果有幫助,這是我得到的錯誤。

ObjectParameterError: Parameter "obj" to Document() must be an object, got 
redditaza
at new ObjectParameterError (C:\Users\10FGD\node_modules\mongoose\lib\error\objectParameter.js:25:11)
at model.Document (C:\Users\10FGD\node_modules\mongoose\lib\document.js:89:11)
at model.Model (C:\Users\10FGD\node_modules\mongoose\lib\model.js:104:12)
at new model (C:\Users\10FGD\node_modules\mongoose\lib\model.js:4656:15)
at app.post (C:\Users\10FGD\Desktop\Games\doubleTheTrouble\server.js:27:26)
at Layer.handle [as handle_request] (C:\Users\10FGD\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\10FGD\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\10FGD\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\10FGD\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\10FGD\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Users\10FGD\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\10FGD\node_modules\express\lib\router\index.js:275:10)
at serveStatic (C:\Users\10FGD\node_modules\express\node_modules\serve-static\index.js:75:16)
at Layer.handle [as handle_request] (C:\Users\10FGD\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\Users\10FGD\node_modules\express\lib\router\index.js:317:13)
at C:\Users\10FGD\node_modules\express\lib\router\index.js:284:7

我應該注意到我的 console.log() 中的代碼運行良好,這就是我想要發送到我的數據庫的代碼。

這似乎有效,以防將來有人遇到同樣的問題。 我使用 mongodb 而不是 mongoose require

但是如果你有一個適用於貓鼬的解決方案,請發布它:)

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)
});
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}`);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM