如何查找记录
- 通过属性查找(可能会有重复记录)
- 通过ID查找
通过属性查找的方法来查找记录
Mongo Queries:
Collection.find(条件)
Collection.findOne(条件)
在test里面创建reading_test.js文件:
const assert = require('assert');
const User = require('../src/user');
describe('Reading users out of the database', () => {
//在这里申明变量
let joe;
beforeEach((done) => {
//不使用const变量,因为JavaScript的变量作用域问题
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) => { //截获结果
console.log(users);
done();
});
});
});
instance的_id属性
在创建一个instance时,Mongoose会自动为其分配一个_id,而大多数ORM在instance没有被存到数据库中之前不会为其分配id属性。
- 上面代码将所有名字为Joe的instance输出,下面用id属性来判断这个instance是不是我们这个测试组所创建的。
//添加断言,比较用query到的instance和我们在hook function里面创建的是不是同一个:
assert(users[0]._id === joe._id);
- 也可以将这两个id输出做比较:
console.log("用query找到的instance: " + users[0]._id);
console.log("本测试组的hook function创建的instance: " + joe._id);
-
id的储存形式:
- 修改断言
assert(users[0]._id.toString() === joe._id.toString());
通过ID查找一个指定的instance
- 使用findOne函数进行查找:
it('find a user with a particular id', (done) => {
User.findOne({_id : joe._id})
.then((user) => {
assert(user.name === 'Joe');
done();
});
});