关于 thinkjs 和 mongodb 的增删改查操作
发布于 8 年前 作者 vxhly 4131 次浏览 来自 问答

这边有个 action

  async registerAction() {
    // 接受数据
    let {
      name,
      passwd
    } = this.post();
    passwd = think.md5(passwd);

    let userModelInstance = this.model('user');

    try { // 写入数据
      let _id = await userModelInstance.addUser({
        name: name,
        passwd: passwd
      }); // 用户 ID

      // 调用 tokenservice 中间件
      let tokenService = think.service('token');
      // console.log(tokenService);
      let instance = new tokenService();
      // 写入 token 信息
      let token = await instance.createToken({
        userInfo: {
          id: _id,
          name: name
        }
      });
      // 传输客户端 token
      this.http.header('token', token);
      return this.success('SUCCESS');
    } catch (err) {
      think.log(err);
      return this.fail('SERVER_INVALID');
    }
  }

这是 model

  async addUser(data = {}) {
    let userModelInstance = this.model('user');
    return userModelInstance
      .add({
        name: data.name,
        passwd: data.passwd
      })
  }

这样的操作是没有问题的,但是不想提交一个重复的数据,官方文档中有个方法 model.thenAdd(data, where), 这个方法是当 where 条件未命中到任何数据时才添加数据。所以提交一个不重复的数据,用这个方法怎么写,或者说有更好的方法????

1 回复

简单点,先查再写。 或者 where 判断 name 是否重复,where 可以参考 modle.where(where) 的用法。

回到顶部