无法实现注册功能,前端无法提交数据给数据库
报错 Error: Error: Network Error
at _callee2$ (ajax.js?ab3e:46:1)
at tryCatch (runtime.js?96cf:45:1)
at Generator.invoke [as _invoke] (runtime.js?96cf:271:1)
at prototype.<computed> [as throw] (runtime.js?96cf:97:1)
at asyncGeneratorStep (asyncToGenerator.js?1da1:3:1)
at _throw (asyncToGenerator.js?1da1:29:1)
尝试换成老师的后端代码,结果注册功能是能正常运行的,因此数据库方面链接应是没有问题的。感觉是路由部分出了问题,尝试将老师给的资料中后端路由相关代码(router目录下的users和src目录下的app.js,db目录下的db.js)替换我的代码,但程序仍旧报错,找不出问题所在,望解答,另外,为什么在开发者工具里的网络中他没有连接成功却没有返回相关的状态代码?截图如下
以下为我的代码,
app.js 部分
const Koa = require('koa')
const app = new Koa()
const views = require('koa-views')
const json = require('koa-json')
const onerror = require('koa-onerror')
const bodyparser = require('koa-bodyparser')
const logger = require('koa-logger')
const cors = require('koa-cors')
// 引入路由
const index = require('./routes/index')
const users = require('./routes/users')
// error handler
onerror(app)
// middlewares
app.use(bodyparser({
enableTypes:['json', 'form', 'text']
}))
app.use(json())
app.use(logger())
app.use(require('koa-static')(__dirname + '/public'))
app.use(views(__dirname + '/views', {
extension: 'pug'
}))
app.use(cors({
origin:'http://localhost:8080', //支持前端哪个域跨域
credential:true,
}))
// logger
app.use(async (ctx, next) => {
const start = new Date()
await next()
const ms = new Date() - start
console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
})
// routes
app.use(index.routes(), index.allowedMethods())
app.use(users.routes(), users.allowedMethods())
// error-handling
app.on('error', (err, ctx) => {
console.error('server error', err, ctx)
});
module.exports = app
db目录下的db.js部分
// 链接mongodb数据库服务
const mongoose=require('mongoose')
const url='mongodb://localhost:27017'
const dbName='comment'
mongoose.connect(`${url}/${dbName}`)
const conn=mongoose.connection
conn.on('error',err=>{
console.error('mongodb连接出错',err)
})
module.exports=mongoose
routers目录下的users.js部分
const router = require('koa-router')()
const { register } = require('../controller/user')
router.prefix('/users')
router.post('/register', async (ctx, next) => {
// 获取注册信息
const userInfo = ctx.request.body
// 提交注册
try {
const newUser = await register(userInfo)
// 成功
ctx.body = {
errno: 0,
data: newUser,
}
} catch (ex) {
console.error('注册失败', ex)
// 失败
ctx.body = {
errno: -1,
message: '注册失败',
}
}
})
module.exports = router
model目录下的user.js
const mongoose = require('../db/db')
const UserSchema = mongoose.Schema({
Username: {
type: String,
required: true,
unique: true
},
password: String,
age: Number,
city: String,
gender: {
type: Number,
default: 0//0保密,1男,2女
}
},
{
timestamps: true
}
)
const User=mongoose.model('user',UserSchema)
module.exports=User
controller目录下的user.js部分
// User Controller
const User=require('../model/User')
async function register(userinfo={}){
console.log('尝试向数据库写入数据');
// 插入数据库
const newUser=await User.create(userinfo)
// 返回注册的用户信息
return newUser
}
module.exports={
register,
}
最后,附上我的npm版本相关
{
"name": "ProjectComment",
"version": "0.1.0",
"private": true,
"scripts": {
"start": "node bin/www",
"dev": "./node_modules/.bin/nodemon bin/www",
"prd": "pm2 start bin/www",
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"debug": "^4.1.1",
"koa": "^2.7.0",
"koa-bodyparser": "^4.2.1",
"koa-convert": "^1.2.0",
"koa-cors": "0.0.16",
"koa-json": "^2.0.2",
"koa-logger": "^3.2.0",
"koa-onerror": "^4.1.0",
"koa-router": "^7.4.0",
"koa-static": "^5.0.0",
"koa-views": "^6.2.0",
"mongoose": "^6.5.0",
"pug": "^2.0.3"
},
"devDependencies": {
"nodemon": "^1.19.1"
}
}
正在回答
同学你好,代码存在书写问题,具体修改如下:
1、app.js中,需要做如下修改:
2、User.js中,需要做如下修改:
修改后,老师这边可以注册成功:
问题解答如下:
如果请求根本没有发送成功、连接成功,可能就没有状态码。老师这边测试,状态码中会有提示信息,不是空的:
所以可能和浏览器也有关系。
祝学习愉快!
已经找到问题所在,源于后端代码中的app.js
credentials:true代码拼写错误所致,但又出现了新的错误,注册无法成功
相似问题
登录后可查看更多问答,登录/注册
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星