最大的问题是我对MongoDB
完全不熟悉。我知道如何在SQL
中执行此操作但无法将我的想法转移到NoSQL
。我有这个模型:
var accountSchema = new mongoose.Schema({
isPremium: Boolean,
website: []
});
我正在使用mongoose,因此它会自动创建Id,用户名和密码。我的注册用户看起来像这样:
{
_id: ObjectId('5a79c89b59b6042a5d89584b'),
websites: ['a.com', 'b.com', 'c.com'],
username: 'a@a.a',
isPremium: false,
hash:
'a long hash',
salt: 'a long salt',
__v: 0,
};
我想要写出websites
数组。我想只抓取某个用户下的网站。 (不要让别人只看到所有网站)。
我该怎么办?我会在点击后传递userId还是在会话中进行传递? “查询”会是什么样的?
答案 0 :(得分:1)
你可以这样做。
首先将您的模型定义为单独的模块
var mongoose = require('mongoose');
const accountSchema = mongoose.Schema(
{
isPremium: Boolean,
website: []
});
module.exports = mongoose.model('account',accountSchema);
然后您可以在代码中随处使用此模型
const account = require('yourModulePath');
account.findOne({YouSearchParameters}).
then((account) => {
// let websites = account.website
// Do you logic
})
您还可以使用.select
过滤结果account.findOne({YouSearchParameters}).select({ "website": 1, "_id": 0}).then((account)
所以你只需要获得一系列网站