查找记录

如何查找记录

  • 通过属性查找(可能会有重复记录)
  • 通过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的储存形式:


    查找记录_第1张图片
    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();
                  });
            });

你可能感兴趣的:(查找记录)