1.api.js
#2.db.js
3.vue
#4.資料庫
#結果是:
#就是取得到的結果是空數組,可是這個連結和資料庫都是對的,這是為什麼? ? ?
ringa_lee
這個問題的癥結如 @cheesekun 所說,是因為:mongoose會自動幫把 model 中的集合名(第一個參數)改為複數形式了。
這裡我給出了自己的試驗過程,並在下面提供了兩種解決方案。
根據題主的意思首先創建了一個簡單的項目
app.js
const express = require('express'); const app = express(); app.use('/api',require('./router/api')); app.listen(3000, () => { console.log('Server is running!'); });
module/db.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 }
router/api.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;
透過 視覺化工具 連接到 mongodb 預先在 test 資料庫 list 集合下插入了一條文件
透過瀏覽器直接存取得到了 同題主一樣的空數組
嘗試插入一條文檔到集合中
在 module/db.js 底部透過程式碼插入一條資料
const list = new List({ name: '代码创建的数据', age: 1 }); list.save(function (err, data) { console.log(data); });
重新運行,並透過瀏覽器訪問,返回了透過程式碼插入的資料
此時透過 視覺化工具 可以發現 多出了 lists 這個集合,而我們透過程式碼插入的資料就在其中
lists
如不明確指定集合名,mongoose會自動幫把 model() 中的第一個參數改為複數形式後作為集合名
提供兩個解,都是指定集合名稱
第一種:
給 mongoose.model() 傳遞第三個參數來指定集合名稱
const List = mongoose.model('list', listSchema,'list');
第二種:
給 Schema 傳遞第二個配置項來指定集合名
const listSchema = new Schema({ name: String, age: Number },{ collection: 'list' });
我賭5毛。 mongoose定義model時,會給表名自動加s,而你的login和list都沒有加s調用不到數據庫這是我之前寫的博客,最下面有提到mongoose深海巨坑
mongoose
你在res.send(data)加個console.log(data),看看可有結果
先直接看控制台裡xhr回傳是否有值,如果有值就是你取得辦法不對。
如果沒有就是你壓根沒有把數值發出去,表示問題出現在後端,再往回排查。
這個問題的癥結如 @cheesekun 所說,是因為:mongoose會自動幫把 model 中的集合名(第一個參數)改為複數形式了。
這裡我給出了自己的試驗過程,並在下面提供了兩種解決方案。
根據題主的意思首先創建了一個簡單的項目
app.js
module/db.js
router/api.js
透過 視覺化工具 連接到 mongodb 預先在 test 資料庫 list 集合下插入了一條文件
發現問題
透過瀏覽器直接存取得到了 同題主一樣的空數組
尋找原因
嘗試插入一條文檔到集合中
在
module/db.js
底部透過程式碼插入一條資料重新運行,並透過瀏覽器訪問,返回了透過程式碼插入的資料
此時透過 視覺化工具 可以發現 多出了
lists
這個集合,而我們透過程式碼插入的資料就在其中解決方案
如不明確指定集合名,mongoose會自動幫把 model() 中的第一個參數改為複數形式後作為集合名
提供兩個解,都是指定集合名稱
第一種:
給 mongoose.model() 傳遞第三個參數來指定集合名稱
第二種:
給 Schema 傳遞第二個配置項來指定集合名
我賭5毛。
mongoose
定義model時,會給表名自動加s,而你的login和list都沒有加s調用不到數據庫
這是我之前寫的博客,最下面有提到
mongoose深海巨坑
你在res.send(data)加個console.log(data),看看可有結果
先直接看控制台裡xhr回傳是否有值,如果有值就是你取得辦法不對。
如果沒有就是你壓根沒有把數值發出去,表示問題出現在後端,再往回排查。