Rumah  >  Soal Jawab  >  teks badan

javascript - Gunakan nodejs untuk memindahkan data pangkalan data ke meja depan Terdapat data dalam pangkalan data dan sambungan berjaya, tetapi mengapa tatasusunan kosong diperoleh?

1.api.js

2.db.js


3.vue

4

Hasilnya ialah:

Hasil yang diperolehi adalah tatasusunan kosong, tetapi kedua-dua pautan dan pangkalan data adalah betul. ? ?

ringa_leeringa_lee2715 hari yang lalu1158

membalas semua(4)saya akan balas

  • 滿天的星座

    滿天的星座2017-06-05 11:10:50

    Inti masalah ini, seperti yang dikatakan @cheesekun, ialah mongoose secara automatik akan menukar nama koleksi (parameter pertama) dalam model kepada bentuk jamak.

    Di sini saya memberikan proses eksperimen saya sendiri dan menyediakan dua penyelesaian di bawah.

    Saya mula-mula mencipta projek mudah berdasarkan maksud topik

    app.js

    const express = require('express');
    const app = express();
    
    app.use('/api',require('./router/api'));
    
    app.listen(3000, () => {
        console.log('Server is running!');
    });
    app.js

    const mongoose = require('mongoose');
    
    mongoose.connect('mongodb://127.0.0.1:27017/test');
    mongoose.connection
        .on('connected', _ => console.log('mongodb connect successed'))
        .on('error', _ => console.log('mongodb connect failed'))
        .on('disconnected', _ => console.log('mongodb connect disconnected'));
    
    const Schema = mongoose.Schema;
    const listSchema = new Schema({
        name: String,
        age: Number
    });
    
    const List = mongoose.model('list', listSchema);
    
    module.exports = {
        List
    }

    module/db.js

    const express = require('express');
    const db = require('../module/db');
    
    const router = express.Router();
    
    router.get('/list', (req, res) => {
        db.List.find((err,data)=>{
            if(err){
                console.log(err);
            }else{
                res.json(data);
            }
        });
    });
    
    module.exports = router;

    router/api.js

    const list = new List({
        name: '代码创建的数据',
        age: 1
    });
    list.save(function (err, data) {
        console.log(data);
    });
    

    通过 可视化工具 连接到 mongodb 预先在 test 数据库 list 集合下插入了一条文档

    发现问题

    通过浏览器直接访问得到了 同题主一样的空数组

    寻找原因

    尝试插入一条文档到集合中

    module/db.js 底部通过代码插入一条数据

    const List = mongoose.model('list', listSchema,'list');

    重新运行,并通过浏览器访问,返回了通过代码插入的数据

    此时通过 可视化工具 可以发现 多出了 listsmodul/db.js

    const listSchema = new Schema({
        name: String,
        age: Number
    },{
        collection: 'list'
    });

    penghala/api.js rrreee Sambung ke mongodb melalui alat visualisasi dan masukkan dokumen di bawah koleksi senarai pangkalan data ujian terlebih dahulu

    Masalah ditemui

    Diakses terus melalui penyemak imbas dan mendapat tatasusunan kosong yang sama seperti subjek

    Cari sebabnya

    Cuba masukkan dokumen ke dalam koleksi

    Di bahagian bawah modul/db.js

    masukkan sekeping data

    melalui kod

    rrreee Jalankan semula dan akses melalui penyemak imbas, data yang dimasukkan melalui kod dikembalikan

    🎜 🎜Pada masa ini, anda boleh menemui melalui alat visualisasi bahawa terdapat koleksi tambahan senarai, dan data yang kami masukkan melalui kod itu ada di dalamnya🎜 🎜🎜🎜🎜🎜 🎜Penyelesaian🎜 🎜🎜Jika anda tidak menyatakan nama koleksi secara eksplisit, mongoose akan menukar parameter pertama secara automatik dalam model() kepada bentuk jamak sebagai nama koleksi🎜🎜 🎜Sediakan dua penyelesaian, kedua-duanya nyatakan nama koleksi🎜 🎜Jenis pertama:🎜 🎜🎜Lepaskan parameter ketiga ke mongoose.model() untuk menentukan nama koleksi🎜🎜 rrreee 🎜Jenis kedua: 🎜 🎜🎜Lepaskan item konfigurasi kedua ke Skema untuk menentukan nama koleksi🎜🎜 rrreee

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-05 11:10:50

    Saya bertaruh 50 sen.
    mongooseApabila mentakrifkan model, s ditambah secara automatik pada nama jadual, tetapi log masuk dan senarai anda tidak ditambah s
    Pangkalan data tidak boleh dipanggil
    Ini adalah blog yang saya tulis sebelum ini, dan ia disebut di bahagian bawah
    mongoose deep lubang laut

    balas
    0
  • 天蓬老师

    天蓬老师2017-06-05 11:10:50

    Tambah console.log(data) ke res.send(data) dan lihat jika terdapat sebarang hasil

    balas
    0
  • 某草草

    某草草2017-06-05 11:10:50

    Pertama sekali, semak terus sama ada nilai pulangan xhr dalam konsol mempunyai nilai Jika ada nilai, bermakna anda tidak memperolehnya dengan betul.

    Jika tidak, ini bermakna anda tidak menghantar nilai sama sekali, yang bermaksud masalah berlaku di bahagian belakang, dan anda boleh kembali dan menyemak.

    balas
    0
  • Batalbalas