javascript - Gunakan nodejs untuk memindahkan data pangkalan data ke meja depan Terdapat data dalam pangkalan data dan sambungan berjaya, tetapi mengapa tatasusunan kosong diperoleh?
ringa_lee2017-06-05 11:08:50
0
4
1186
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. ? ?
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
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
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
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.
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 topikapp.js
app.js
module/db.js
router/api.js
通过 可视化工具 连接到 mongodb 预先在 test 数据库 list 集合下插入了一条文档
发现问题
通过浏览器直接访问得到了 同题主一样的空数组
寻找原因
尝试插入一条文档到集合中
在
module/db.js
底部通过代码插入一条数据重新运行,并通过浏览器访问,返回了通过代码插入的数据
此时通过 可视化工具 可以发现 多出了modul/db.js
lists
Diakses terus melalui penyemak imbas dan mendapat tatasusunan kosong yang sama seperti subjek
Cuba masukkan dokumen ke dalam koleksi
Di bahagian bawahmodul/db.js
masukkan sekeping data
melalui kodrrreee 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 tambahanSaya bertaruh 50 sen.
mongoose
Apabila mentakrifkan model, s ditambah secara automatik pada nama jadual, tetapi log masuk dan senarai anda tidak ditambah sPangkalan data tidak boleh dipanggil
Ini adalah blog yang saya tulis sebelum ini, dan ia disebut di bahagian bawah
mongoose deep lubang laut
Tambah console.log(data) ke res.send(data) dan lihat jika terdapat sebarang hasil
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.