如何查找記錄
- 通過屬性查找(可能會有重復(fù)記錄)
- 通過ID查找
通過屬性查找的方法來查找記錄
Mongo Queries:
Collection.find(條件)
Collection.findOne(條件)
在test里面創(chuàng)建reading_test.js文件:
const assert = require('assert');
const User = require('../src/user');
describe('Reading users out of the database', () => {
//在這里申明變量
let joe;
beforeEach((done) => {
//不使用const變量抱怔,因?yàn)镴avaScript的變量作用域問題
joe = new User({name: 'Joe'});
joe.save()
.then(() => done());
});
it('finds all users with a name of joe', (done) => {
//查找所有符合條件的記錄
User.find({name : 'Joe'})
.then((users) => { //截獲結(jié)果
console.log(users);
done();
});
});
});
instance的_id屬性
在創(chuàng)建一個instance時(shí)剿另,Mongoose會自動為其分配一個_id官辽,而大多數(shù)ORM在instance沒有被存到數(shù)據(jù)庫中之前不會為其分配id屬性法挨。
- 上面代碼將所有名字為Joe的instance輸出壶辜,下面用id屬性來判斷這個instance是不是我們這個測試組所創(chuàng)建的。
//添加斷言叉橱,比較用query到的instance和我們在hook function里面創(chuàng)建的是不是同一個:
assert(users[0]._id === joe._id);
- 也可以將這兩個id輸出做比較:
console.log("用query找到的instance: " + users[0]._id);
console.log("本測試組的hook function創(chuàng)建的instance: " + joe._id);
-
id的儲存形式:
- 修改斷言
assert(users[0]._id.toString() === joe._id.toString());
通過ID查找一個指定的instance
- 使用findOne函數(shù)進(jìn)行查找:
it('find a user with a particular id', (done) => {
User.findOne({_id : joe._id})
.then((user) => {
assert(user.name === 'Joe');
done();
});
});