Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在模型“user”上找不到主键属性。所有模型都必须包含充当主键的属性_Javascript_Mongodb_Express_Waterline - Fatal编程技术网

Javascript 在模型“user”上找不到主键属性。所有模型都必须包含充当主键的属性

Javascript 在模型“user”上找不到主键属性。所有模型都必须包含充当主键的属性,javascript,mongodb,express,waterline,Javascript,Mongodb,Express,Waterline,我有一个水线模型,定义如下 var Waterline = require('Waterline'); var bcrypt = require('bcrypt'); var User = Waterline.Collection.extend({ identity: 'user', datastore: 'myMongo', autoPK: false, attributes: { id: { type: 'integer', autoIncremen

我有一个水线模型,定义如下

var Waterline = require('Waterline');
var bcrypt = require('bcrypt');

var User = Waterline.Collection.extend({
identity: 'user',
datastore: 'myMongo',
autoPK: false,
attributes: {
    id: {
        type: 'integer',
        autoIncrement: true,
        primaryKey: true
    },
    email: {
        type: 'string',
        email: true,
        required: true,
        unique: true
    },
    username: {
        type: 'string',
        required: true,
    },

    image: {
        type: 'string'
    },

    password: {
        type: 'string',
        required: true
    },

    mobNo: {
        type: 'string',
        required: true
    },
    aadharNo: {
        type: 'string',
        required: true
    },

    toJSON: function () {
        var obj = this.toObject();
        delete obj.password;
        return obj;
    }
},

beforeCreate: function (values, next) {
    var bcrypt = require('bcrypt');

    bcrypt.genSalt(10, function (err, salt) {
        if (err) return next(err);

        bcrypt.hash(values.password, salt, function (err, hash) {
            if (err) return next(err);

            values.password = hash;
            next();
        });
    });
}
});

module.exports = User;
在运行应用程序时,当waterline初始化时,我得到以下错误

userError: Could not find a primary key attribute on the model `user`. All models must contain an attribute that acts as the primary key and is guaranteed to be unique.
at normalizeCollection (C:\Users\shriko\WebstormProjects\baclasses\node_modules\waterline-schema\lib\waterline-schema\schema.js:85:44)
at arrayEach (C:\Users\shriko\WebstormProjects\baclasses\node_modules\@sailshq\lodash\lib\index.js:1439:13)
at Function.<anonymous> (C:\Users\shriko\WebstormProjects\baclasses\node_modules\@sailshq\lodash\lib\index.js:3500:13)
at schemaBuilder (C:\Users\shriko\WebstormProjects\baclasses\node_modules\waterline-schema\lib\waterline-schema\schema.js:34:5)
at new WaterlineSchema (C:\Users\shriko\WebstormProjects\balajiclasses\node_modules\waterline-schema\lib\waterline-schema.js:36:12)
at Object.initialize (C:\Users\shriko\WebstormProjects\baclasses\node_modules\waterline\lib\waterline.js:581:26)
at Object.<anonymous> (C:\Users\shriko\WebstormProjects\baclasses\bin\www:32:18)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Function.Module.runMain (module.js:676:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3 
userError:在模型“user”上找不到主键属性。所有模型都必须包含一个充当主键的属性,并保证其唯一性。
在normalizeCollection(C:\Users\shriko\webstorprojects\baclass\node\u modules\waterline schema\lib\waterline schema\schema.js:85:44)
在ArrayAch(C:\Users\shriko\webstorprojects\baclass\node\u modules\@sailshq\lodash\lib\index.js:1439:13)
在功能上。(C:\Users\shriko\webstorprojects\baclass\node\u modules\@sailshq\lodash\lib\index.js:3500:13)
在schemaBuilder(C:\Users\shriko\webstorprojects\baclass\node\u modules\waterline schema\lib\waterline schema\schema.js:34:5)
在新的WaterlineSchema(C:\Users\shriko\webstorprojects\balajiclasses\node\u modules\WaterlineSchema\lib\WaterlineSchema.js:36:12)
在Object.initialize(C:\Users\shriko\webstorprojects\baclass\node\u modules\waterline\lib\waterline.js:581:26)
反对。(C:\Users\shriko\webstoreprojects\baclass\bin\www:32:18)
在模块处编译(Module.js:635:30)
在Object.Module.\u extensions..js(Module.js:646:10)
在Module.load(Module.js:554:32)
在tryModuleLoad时(module.js:497:12)
在Function.Module.\u加载(Module.js:489:3)
位于Function.Module.runMain(Module.js:676:10)
启动时(bootstrap_node.js:187:16)
在bootstrap_node.js:608:3
正如您所看到的,autoPK为false,设置了手动主键,仍然得到了这个结果

我正在使用“水线”:“^0.13.1-9”和express。 还剩下什么来创建主键

谢谢

检查waterline架构包中的代码会发现,也必须在架构定义中设置主键

var User = Waterline.Collection.extend({
identity: 'user',
datastore: 'myMongo',
autoPK: false,
primaryKey: 'id',
attributes: {
    id: {
        type: 'integer',
        autoIncrement: true,
        primaryKey: true
    }

修改了我的答案。未对属性进行验证。