【问题标题】:Cannot read property 'columnName' of undefined in sails Js Mongo DB无法读取 Sails Js Mongodb 中未定义的属性“列名”
【发布时间】:2020-07-19 18:35:49
【问题描述】:

我正在使用带有 Mongo DB 的sails JS。 我的模型是:

module.exports = {
  attributes: {
    title:{type:"string",required:true},
    content:{type:"string",required:true},
    date:{type:"string",required:true},
    filename:{type:"string",required:true},
  },
};

我的控制器是:

fetchposts:function(req,res){
        console.log("in fetch posts")
        mysort={$id:-1}
  
       Cyberblog.find().sort(mysort).limit(5).exec(function(err, result) {
            if (err || !result) {
                 message="no records fetched";
                 console.log(message);
                 res.redirect('/newpost');
                 }
             else{
                console.log(result)
             }   

我遇到了一个错误提示

“警告:提供的条件中的sort子句被指定为字典(普通JS对象), 这意味着它可能使用了 Mongo-Esque 语义(类似于{ fullName: -1, rank: 1 })。 但从 Sails v1/Waterline 0.13 开始,这不再是推荐的用法。相反,请使用 像'fullName DESC' 这样的字符串,或者像[ { fullName: 'DESC' } ] 这样的数组。 (既然我明白你的意思,暂时容忍并重新映射这种用法......)

我无法获取任何记录。它显示未获取任何记录。

所以我有一个关于排序的警告,并且没有来自数据库的记录。请帮我解决问题。

【问题讨论】:

  • 我来这里是为了寻找与标题中引用的错误消息相关的信息,但问题似乎与标题中的错误无关。您能否更改标题以避免误导未来的搜索者?或者更改问题以明确与标题的关系?

标签: node.js mongodb sails.js sails-mongo


【解决方案1】:

排序子句允许发送字符串:

var users = await User.find({ name: 'Jake'})
.sort('age ASC');

return res.json(users);

或者一个数组:

var users = await User.find({ name: 'Finn'})
.sort([
  { age: 'ASC' },
  { createdAt: 'ASC' },
]);

return res.json(users);

在文档中查看:

https://sailsjs.com/documentation/reference/waterline-orm/queries/sort

【讨论】:

  • 嗨.. 感谢您的回答.. 但是我在检索“name:finn”之类的数据时没有标准.. 我只想要最新的五条记录.. 在风帆中不可能-mongo?
  • 您可以使用 await Model.find().sort('createdAt DESC').limit(5) 过滤最后的项目
猜你喜欢
  • 1970-01-01
  • 2015-10-22
  • 2018-01-27
  • 2020-10-09
  • 1970-01-01
  • 2022-01-01
  • 2020-06-04
  • 2016-01-12
  • 2021-04-29
相关资源
最近更新 更多