【问题标题】:Retrieving records in ember js在 ember js 中检索记录
【发布时间】:2015-10-18 15:04:23
【问题描述】:

我是 ember js 的新手。我有一个表单,当用户点击提交时,我想检查用户输入的用户名和密码是否已经在我的模型/数据库中。我尝试了以下操作,但没有成功。请帮我解决这个问题...

模板

<h2>Welcome to my blog</h2>

 <form {{action 'exist' on="submit"}}>

        <dl>
        <dt>User Name:<br> {{textarea value=uName cols="20" rows="1"}}</dt>
        <dt>Password:<br> {{textarea value=passw cols="20" rows="1"}}</dt>
        </dl>
        <button type="submit" class="btn btn-primary">Login</button>
 </form>

型号

import DS from 'ember-data';

export default DS.Model.extend({

    FirstName: DS.attr('string'),
    UserName: DS.attr('string'),
    Password: DS.attr('string'),
    PermissionList: DS.attr('array')

});

路线

import Ember from 'ember';

export default Ember.Route.extend({
    model: function() {
        return this.store.find('user');
    }
});

控制器

import Ember from 'ember';

export default Ember.Controller.extend({
    actions: {
        ght: function () {
            var uName = this.get('uName');
            var passw = this.get('passw');

            if (this.store.find('user', {
                userName: this.get('uName')
            })) {
                alert('Already exist');
            }
        }
    }
});

// 每个输入都会显示此警报。即使它们不在模型中

【问题讨论】:

    标签: javascript ember.js


    【解决方案1】:

    因为store.find() 总是返回一个作为对象的承诺,if 条件总是评估为真。您可能应该做的是等待承诺解决并进行检查

    // ...
    var uName = this.get('uName');
    this.store.find('user', {
        userName: uName
    }).then(function(user) {
        if(user) {
            alert('Already exist');
        } else {
    
        }
    });
    // ...
    

    【讨论】:

    • 还是有同样的问题
    • 你的问题是什么?他提供的代码按预期的方式工作。你需要先解决 promise 以检查它对你的数据库的唯一性。
    • 这段代码应该可以工作。你能增加更多的精度吗?已解决的 promise 函数中 user 的值是多少?
    【解决方案2】:

    这个表单看起来像一个登录表单。如果我的假设是正确的,如果用户已经登录(在这种情况下会话将包含用户信息),则您不会显示此表单。如果用户未登录,您将不得不显示表单。我认为您不需要在商店中搜索用户。只需将用户发送/保存到服务器并让用户在服务器端找到逻辑并相应地发送响应。在 ember 方面,您可以通过处理 .then 的 promise 来显示存在的结果。

    如果您的用例不同,您可以使用查询(针对多条记录)。和单条记录的查询记录

    Query

    从文档中复制粘贴

    // GET to /persons?filter[name]=Peter
    this.store.query('person', { filter: { name: 'Peter' } }).then(function(peters) {
      // Do something with `peters`
    });
    
    
    // GET to /persons?filter[email]=tomster@example.com
    this.store.queryRecord('person', { filter: { email: 'tomster@example.com' } }).then(function(tomster) {
      // do something with `tomster`
    });
    

    //如果这没有帮助,在移动设备上将添加代码

    【讨论】:

      猜你喜欢
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      相关资源
      最近更新 更多