node.js - 初始化独立 Waterline 后无法查询集合

标签 node.js sails.js waterline

我在我的express.js应用程序中使用独立的Waterline(带有sails-disk驱动器)。

我收到以下错误:

/home/tux/IdeaProjects/my-first-waterline-thing/node_modules/waterline/lib/waterline/core/index.js:70
  var schemaAttributes = this.waterline.schema[this.identity].attributes;
                                       ^
TypeError: Cannot read property 'schema' of undefined
    at Core._initialize (/home/tux/IdeaProjects/my-first-waterline-thing/node_modules/waterline/lib/waterline/core/index.js:70:40)
    at module.exports (/home/tux/IdeaProjects/my-first-waterline-thing/node_modules/waterline/lib/waterline/core/index.js:50:20)
    at module.exports (/home/tux/IdeaProjects/my-first-waterline-thing/node_modules/waterline/lib/waterline/collection/index.js:44:8)
    at child (/home/tux/IdeaProjects/my-first-waterline-thing/node_modules/waterline/lib/waterline/utils/extend.js:17:39)
    at /home/tux/IdeaProjects/my-first-waterline-thing/bin/www.js:12:47
    at /home/tux/IdeaProjects/my-first-waterline-thing/database.js:36:9
    at /home/tux/IdeaProjects/my-first-waterline-thing/node_modules/waterline/lib/waterline.js:214:7
    at /home/tux/IdeaProjects/my-first-waterline-thing/node_modules/waterline/node_modules/async/lib/async.js:157:25
    at /home/tux/IdeaProjects/my-first-waterline-thing/node_modules/waterline/lib/waterline/query/index.js:70:7
    at /home/tux/IdeaProjects/my-first-waterline-thing/node_modules/waterline/lib/waterline/adapter/sync/strategies/alter.js:190:22
    at bound (/home/tux/IdeaProjects/my-first-waterline-thing/node_modules/waterline/node_modules/lodash/dist/lodash.js:957:21)
    at applyInOriginalCtx (/home/tux/IdeaProjects/my-first-waterline-thing/node_modules/waterline/lib/waterline/utils/normalize.js:416:80)
    at wrappedCallback (/home/tux/IdeaProjects/my-first-waterline-thing/node_modules/waterline/lib/waterline/utils/normalize.js:315:18)
    at _normalizeCallback.callback.success (/home/tux/IdeaProjects/my-first-waterline-thing/node_modules/waterline/node_modules/switchback/lib/normalize.js:33:31)
    at _switch (/home/tux/IdeaProjects/my-first-waterline-thing/node_modules/waterline/node_modules/switchback/lib/factory.js:48:28)
    at null._onTimeout (/home/tux/IdeaProjects/my-first-waterline-thing/node_modules/sails-disk/lib/adapter.js:179:10)

这是我用来测试 Waterline 使用情况的代码(在我的 bin/www 文件中):

require('../database.js')(app, function(err) {
    if (err) {
        return console.log("Waterline didn't initialize: " + err);
    }
    // Smoke-test to verify Waterline functionality
    var testModel = require('../models/users')();
    testModel.find({willNotExist: 42}, function(err, cb) {
        if (!err) {
            console.log('Waterline seems to work');
            var server = app.listen(app.get('port'), function() {
                console.log('Express server listening on port ' + server.address().port);
            });
        } else {
            console.log(err);
        }
    });
});

我的database.js看起来像这样:

var Waterline = require('waterline');
var User = require('./models/users.js');
var sailsDisk = require('sails-disk');

module.exports = function(app, cb) {
    var config = {
        adapters: {
            'default': sailsDisk
        },
        connections: {
            'default': {
                adapter: 'default'
            }
        },
        defaults: {
            migrate: 'alter'
        }

    };

    var orm = new Waterline();
    orm.loadCollection(User);

    orm.initialize(config, function(err, models) {
        app.collections = models.collections;
        cb(err);
    });
};

最佳答案

我认为您应该在初始化之前加载集合,就像在database.js中一样,因此您可以使用app.collections.user.find(...)直接访问它们,而不是在testModel中再次加载它。

关于node.js - 初始化独立 Waterline 后无法查询集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28707764/

相关文章:

testing - 状态代码测试始终通过 Sails.js 和 Mocha

mysql - 在 Sails js 模型中定义关系后,是否需要在数据库中创建显式关系?

javascript - 在 Meteor React 客户端中显示所有用户

javascript - 如何防止 sails.js 在所有 View 上传递 req 对象?

node.js - 无法使用 Stripe API 更新争议证据

node.js - 带有sql查询的私有(private)字段

javascript - 如何在不位于模型文件夹中的情况下创建普通 sails 模型

json - Sails Js-Waterline : Serialize, 解析并初始化模型

node.js - 如何使用弹性 (ELK) 堆栈记录嵌套对象

node.js - Nodejs : Performance issues parsing CSV and Zip