簡體   English   中英

無法將新的注冊發送到我的數據庫mongodb

[英]Can't send a new register to my database mongodb

我有一個問題,當我嘗試在日期數據庫中插入新的寄存器時,其中輸入為{“ url”:“ example.com”},我正在使用express框架,mongodb datebase和庫mongoose(我已經創建了一個新的ID,獲取具有ID的網址,刪除ID ...,僅此而已)

在這里我訪問我的數據庫並嘗試更改它

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();

貓鼬會生成一個_id屬性,其中包含BSON ObjectId。

默認情況下,每個模式都有一個附加到名為id虛擬屬性的getter函數。 此getter函數返回存儲在_id中的BSON ObjectId的字符串表示形式。

該架構沒有將分配器分配給虛擬命名id ,因此當您嘗試分配一個值時,例如:

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

底線

您有2個選擇:

  1. 設置模式選項id:false以禁用默認的getter

     schema.set('id', false) 
  2. 將您的id路徑的名稱更改為其他名稱。

     const schema = new Schema({ myID: { type:String, unique: true }, url: { type: String }, hits: { type: Number }, shortUrl: { type: String } }); 

第二個選擇是我推薦的選擇,它很高興能夠獲得BSON ObjectId的字符串版本,而不必自己使用String進行轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM