【问题标题】:Send Arraydata from the from react to node. and save it in mongoose从 from react 发送 Arraydata 到节点。并将其保存在猫鼬中
【发布时间】:2018-10-09 12:23:32
【问题描述】:

我正在尝试将一个数组从 react using axios 发送到我的 Node.js 文件,但是我得到了一个状态 404 error

我的profileSchema如下:

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

// Create Schema
const ProfileSchema = new Schema({
  user: {
    type: Schema.Types.ObjectId,
    ref: "users"
  },
  preference: [
    {
      type: String
    }
  ],

  date: {
    type: Date,
    default: Date.now
  }
});

module.exports = Profile = mongoose.model("profile", ProfileSchema);

我想用axios request 向后端发送一个数组。

例如

tempArray=["Chocoloate","Vanilla","Strawberry"]

我提出的 axios 请求是

axios
    .post('/api/profile/register', tempArray)
    .then(res => console.log(res.data))
    .catch(err => console.log(err));

我的profile.js 看这个。我也有 body-parse 和所有安装。

const express = require("express");
const router = express.Router();
const mongoose = require("mongoose");
const passport = require("passport");

const Profile = require("../../models/Profile");
// Load User Model
const User = require("../../models/User");
router.get("/test", (req, res) => res.json({ msg: "Profile Works" }));

// @route   POST api/profile
// @desc    Create or edit user profile
// @access  Private
router.post(
  "/register",

  (req, res) => {
    console.log(req);
    var list = req.body;
    console.log(list);

  }
);

但是,我仍然遇到 404 错误,无法将数组保存到后端

index.js 文件

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

const users = require("./routes/api/users");
const profile = require("./routes/api/profile");
const posts = require("./routes/api/posts");
const issues = require("./routes/api/issues");
const mp = require("./routes/api/mp");

const app = express();

// Body parser middleware
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

// DB Config
const db = require("./config/keys").mongoURI;

// Connect to MongoDB
mongoose
  .connect(db)
  .then(() => console.log("MongoDB Connected"))
  .catch(err => console.log(err));

// Passport middleware
app.use(passport.initialize());

// Passport Config
require("./config/passport")(passport);

// Use Routes
app.use("/api/users", users);
app.use('/api/profile', profile);
app.use("/api/posts", posts);
app.use("/api/issues", issues);
app.use("/api/mp", mp);

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

app.listen(port, () => console.log(`Server running on port ${port}`));

【问题讨论】:

  • 请提供您的index.js 后端文件,我的意思是,您设置整个 API 的位置
  • @NguyễnThanhTú 添加了它。
  • 请同时提供您对 api/profile/register 路由的完整实现
  • @NguyễnThanhTú 它在 profile.js 部分中
  • 你用 axios 打对了端口吗?

标签: javascript node.js mongodb reactjs


【解决方案1】:

始终尝试将帖子正文作为对象发送。

tempArray = ['a', 'b', 'c']

axios
    .post('/api/profile/register', {tempArray: tempArray})
    .then(res => console.log(res.data))
    .catch(err => console.log(err));

和 router.post 中的正文参数为

router.post('/register/', function(req, res,next) {

const tempArray = req.body.tempArray;

//perform your query operations here and pass tempArray as params to your query
})

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多