Javascript Can';t向我的数据库mongodb发送新的注册表
我有一个问题,当我尝试在我的数据库中插入一个新的寄存器时,输入是{“url”:“example.com”},我使用的是express framework、mongodb数据库和库mongoose(我已经创建了一个新id,获得了一个id为的url,删除了一个id…,我不能这样做) 在这里,我访问我的数据库并尝试更改它Javascript Can';t向我的数据库mongodb发送新的注册表,javascript,node.js,database,mongodb,mongoose,Javascript,Node.js,Database,Mongodb,Mongoose,我有一个问题,当我尝试在我的数据库中插入一个新的寄存器时,输入是{“url”:“example.com”},我使用的是express framework、mongodb数据库和库mongoose(我已经创建了一个新id,获得了一个id为的url,删除了一个id…,我不能这样做) 在这里,我访问我的数据库并尝试更改它 const mongoose = require('mongoose'); const Chaordic = mongoose.model('Chaordic'); // Add
const mongoose = require('mongoose');
const Chaordic = mongoose.model('Chaordic');
// Add a new URL
exports.addUrl = (req,res,next) => {
var chaordic = new Chaordic();
chaordic.id = req.params.id;
chaordic.url = req.body.url;
chaordic.hits = 0;
chaordic.shortUrl = shortenUrl(chaordic.url)
chaordic.save().then(x =>{
res.status(201).send({
id: chaordic.id
});
}).catch(e =>{
res.status(204).send(e);
})
}
在这里,我向服务器发送一个请求
const express = require('express');
const router = express.Router();
const controller = require('../controllers/controller');
router.post('/users/:id/urls', controller.addUrl);
module.exports = router;
这是我的模型
const mongoose = require('mongoose')
const Schema = mongoose.Schema;
const schema = new Schema({
id: {
type:String,
unique: true
},
url: {
type: String
},
hits: {
type: Number
},
shortUrl: {
type: String
}
});
module.exports = mongoose.model('Chaordic', schema);
当我发送服务器请求时,服务器返回错误204(因为我将其与错误消息放在一起),有人可以帮助我吗?当您使用以下内容创建新文档时:
var chaordic = new Chaordic();
Mongoose生成一个包含BSON对象id的_id属性
默认情况下,每个模式都有一个getter函数附加到名为id
的属性。此getter函数返回存储在_id中的BSON ObjectId的字符串表示形式
架构没有为命名的id
分配setter,因此当您尝试分配如下值时:
chaordic.id = req.params.id;
这是行不通的
考虑这个例子:
#!/usr/bin/env node
'use strict';
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const schema = new Schema({});
const Test = mongoose.model('test', schema);
const test = new Test({});
test.id = 'this is not going to work.';
console.log(test.id);
5ad37f0fb000cf81a881600f
输出:
#!/usr/bin/env node
'use strict';
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const schema = new Schema({});
const Test = mongoose.model('test', schema);
const test = new Test({});
test.id = 'this is not going to work.';
console.log(test.id);
5ad37f0fb000cf81a881600f
底线
您有两种选择:
schema.set('id', false)
const schema = new Schema({
myID: {
type:String,
unique: true
},
url: {
type: String
},
hits: {
type: Number
},
shortUrl: {
type: String
}
});