Node.js类型错误的第一个参数必须是字符串或缓冲区

时间:2019-08-03 17:37:10

标签: node.js

我在node.js中编写了一个小代码,用于在MongoDB集合中插入文档。但是当我请求配置文件路由时,出现了标题中提到的错误。我不知道是哪一行引起了问题,也许是insertOne方法之后的那一行。代码是:

http
  .createServer((req, res) => {

    res.writeHead(200, { "Content-Type": "text/html" });
    var url = req.url;

    if (url == "/") {
      res.end("<h1>Basic route</h1>");
    } else if (url == "/profile") {

      mydb
        .collection("record")
        .insertOne({ username: "vipul", password: "vipul1234" }, (err, result) => {
          if (err) res.end(err);
          else res.end("inserted successfully");
        });
    } else if (url == "/about") {
      res.end("<h1>About Us Page</h1>");
    } else {
      let date = Date();
      res.end("<h1>Incorrect URL</h1><h2>", date, "</h2>");
    }
  })
  .listen(3000, () => {
    console.log("Server listening at port 3000");
  });

请指导我。我是Node的初学者!

1 个答案:

答案 0 :(得分:1)

关于此:

if (err)
    res.end(err);
else
    res.end("inserted successfully");

res.end不接受错误本身。您必须将字符串或缓冲区传递给它。

(在此处查看更多信息:https://nodejs.org/api/http.html#http_response_end_data_encoding_callback

您可以尝试以下方法:

if (err)
    res.end(err.message);
else
    res.end("inserted successfully");