Javascript 返回未定义的get请求
我一直在做一个项目的网址缩短,我得到了一个未定义的结果,以获得请求。 结果我也得到了一张空白页,但据我所知,一切正常,我不知道是什么错误 这是我的代码(请查看app.get部分)Javascript 返回未定义的get请求,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我一直在做一个项目的网址缩短,我得到了一个未定义的结果,以获得请求。 结果我也得到了一张空白页,但据我所知,一切正常,我不知道是什么错误 这是我的代码(请查看app.get部分) 我检查了我的数据库是否输入了模式数据,它正在进入数据库,因此我认为检索会产生问题。您的环境变量是否正常工作?我注意到您没有使用dotenv模块或类似模块来配置进程。envmongoose.model.prototype.find返回找到的对象的数组。如果您在控制台的某个地方键入Array.prototype.name,
我检查了我的数据库是否输入了模式数据,它正在进入数据库,因此我认为检索会产生问题。您的环境变量是否正常工作?我注意到您没有使用
dotenv
模块或类似模块来配置进程。env
mongoose.model.prototype.find
返回找到的对象的数组。如果您在控制台的某个地方键入Array.prototype.name
,您将得到未定义的。相反,使用mongoose.model.prototype.findOne
SaveData.find({url:1})
将为您提供url值为1的资源。您确定存在此类资源吗?还要打印err和数据,并查看输出结果。数据为空或存在错误。如果使用“查找筛选器”未找到匹配的文档,则数据中会出现null。当您执行console.log(data)
操作时,您会看到什么?您始终可以先自己进行一些调试:1)始终查找您正在使用的命令,以查看它的实际功能。2) console.log
一切;仔细检查变量是否包含您认为它们包含的内容。记录数据
而不是数据。name
会立即解决这个问题。这是一个注释,不是答案。(同样,如果mongodb连接不工作,程序甚至在响应客户端请求之前就会崩溃)
'use strict';
var bodyParser = require('body-parser')
var express = require('express');
var mongo = require('mongodb');
var mongoose = require('mongoose');
var http = require("http");
var cors = require('cors');
const dns = require('dns');
var app = express();
// Basic Configuration
var port = process.env.PORT || 3000;
/** this project needs a db !! **/
// mongoose.connect(process.env.DB_URI);
app.use(cors());
/** this project needs to parse POST bodies **/
// you should mount the body-parser here
app.use('/public', express.static(process.cwd() + '/public'));
app.get('/', function(req, res){
res.sendFile(process.cwd() + '/views/index.html');
});
// your first API endpoint...
app.get("/api/hello", function (req, res) {
res.json({greeting: 'hello API'});
});
mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true });
var saveSchema = new mongoose.Schema({
name: String,
url: Number,
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
/** 3) Create and Save a Person */
var SaveData = mongoose.model('Save', saveSchema);
//**Here's the start of my problem,i think**
app.get("/api/shorturl/:id1",function(req,res){
SaveData.find({url:1},function(err,data){ console.log(data.name)//**i am getting undefined for this in console**
res.json(data.name);})
});
app.post("/api/shorturl/new",(req,res)=>{
var body=req.body.url;
dns.lookup(body,(err,data)=>{
var new2= new SaveData({name:body,url:1});
new2.save((err,data)=>{res.json(new2);});
})
});
app.listen(port, function () {
console.log('Node.js listening ...');
});