在ember js中检索记录

时间:2015-10-18 15:04:23

标签: javascript ember.js

我是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');
            }
        }
    }
});

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

2 个答案:

答案 0 :(得分:0)

因为store.find()总是返回一个作为对象的promise,if条件总是求值为true。您应该做的就是等待承诺解决并进行检查,如

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

    }
});
// ...

答案 1 :(得分:0)

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

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

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`
});
如果没有帮助

,移动设备上的

//会添加代码