Pisix
Pisix

Reputation: 205

Sails ReferenceError: Article "Model" is not defined

I try to access to the findOne() through my Article model in my controller, without success.

I had this error

>  error: Sending 500 ("Server Error") response: 
>      ReferenceError: Article is not defined
>         at Object.module.exports.createArticle (c:\Users\pisix\BizBiz\BizBizBackEnd\api\controllers\ArticleController.js:16:9)
>         at bound (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\lodash\dist\lodash.js:729:21)
>         at routeTargetFnWrapper (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\lib\router\bind.js:179:5)
>         at callbacks (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:164:37)
>         at param (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:138:11)
>         at param (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:135:11)
>         at pass (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:145:5)
>         at nextRoute (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:100:7)
>         at callbacks (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:167:11)
>         at C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\lib\router\bind.js:187:7
>         at alwaysAllow (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\lib\hooks\policies\index.js:207:11)
>         at routeTargetFnWrapper (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\lib\router\bind.js:179:5)
>         at callbacks (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:164:37)
>         at param (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:138:11)
>         at param (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:135:11)
>         at pass (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:145:5)
> [ReferenceError: Article is not defined]

how can I fix it?

below My Article model

/**
* Article.js
*
* @description :: TODO: You might write a short summary of how this model works and what it represents here.
* @docs        :: http://sailsjs.org/#!documentation/models
*/

module.exports = {
    autoPK: false,
    autoCreatedAt: false,
    autoUpdatedAt: false,
    tableName:'article',
    identity:'article',
    attributes: {
        idArticle:{
            type:'integer',
            unique:true,
            required:true,
            columnName:'IDARTICLE',
            autoIncrement:true,
            primaryKey:true
        },
        titre:{
            type:'string',
            required:true,
            columnName:'TITRE',
            index:true
        },
        details:{
            type:'text',
            required:true,
            columnName:'DETAILS',
            size:100
        },
        etat:{
            type:'string',
            columnName:'ETAT',
            enum:['Vendu','Réservé'],
            index:true
        },

        prix:{
            type:'float',
            columnName:'PRIX',
            index:true,
            required:true
        },
        dateAjout:{
            type:'datetime',
            columnName:'DATEAJOUT',
            index:true,
            required:true
        },
     }
};

Below My Controller ArticleController.js

module.exports = {

    /**
     * `ArticleController.createArticle()`
     */
    createOArticle: function (req, res) {
        var idarticle = req.body.idarticle;
        console.log('idarticle to edit: '+ idarticle);
        Article.findOne({idArticle:idarticle}).exec(function (err, article) {
            if (article) {
                console.log('article '+ idarticle + ' trouvé');
                var dataarticle = req.body.article;
                article.titre = dataarticle.titre;
                article.details = dataarticle.details;
                article.prix = dataarticle.prix;
                article.etat = dataarticle.etat;
                article.dateAjout=new Date();

                article.save(function (err, success) {
                    if (success) {
                        return res.send({articleupdate: true, article: article,success:true,message:req.__('message-success-creation')});
                    }
                    if (err) {
                        return res.send({success: false, message:req.__('message-erreur-update')})
                    }
                });
            }
            if (err)
            {
                //Create Article
            }

        });
    },

};

I'm using sails v0.11

Upvotes: 2

Views: 3912

Answers (3)

Aman Verma
Aman Verma

Reputation: 51

Check Your Models folder it may be inside Controller folder. and i am already faced the same problem. I don't know how Models folder inserted into Controller folder. So please check your Controller folder. you may have the same problem.

Upvotes: 0

windmaomao
windmaomao

Reputation: 7661

I tried to change the name to lower letter, ex.

        company.find({}).exec(function(err, items) {

It works for me.

Upvotes: 0

Ryan W
Ryan W

Reputation: 6173

You don't have to define the identity of model. Sails.js will use it as a identity and assign it to global i think.

simply remove following line of your model

identity:'article',

Upvotes: 2

Related Questions