Mongodbにデータを保存し、js/nodejsとmongooseを使用してアクセスしています。 .find()を使用して、データベース内の何かを問題なく見つけることができます。これは問題ではありません。問題は、何かない場合は別のことをしたいということです。現在、これは私が試しているものです:
UserModel.find({ nick: act.params }, function (err, users) {
if (err) { console.log(err) };
users.forEach(function (user) {
if (user.nick === null) {
console.log('null');
} else if (user.nick === undefined) {
console.log('undefined');
} else if (user.nick === '') {
console.log('empty');
} else {
console.log(user.nick);
}
});
});
Act.paramsがニックインデックスに含まれていない場所で何かを実行すると、これらのいずれも起動しません。これが発生した場合、コンソールには何も表示されませんが、実際にuser.nickにログが記録されるようにします。私はちょうどこのように逆にそれをやろうとしました:
UserModel.find({ nick: act.params }, function (err, users) {
if (err) { console.log('noooope') };
users.forEach(function (user) {
if (user.nick !== '') {
console.log('null');
} else {
console.log('nope');
}
});
});
しかし、これはまだnope
を記録しませんでした。ここに何が欠けていますか?
それが見つからない場合は、find呼び出しのすべてをスキップします。これは問題ありませんが、見つからない場合は後で行う必要があることを除いては問題ありません。 :/
一致するものがない場合、find()は[]
を返し、findOne()はnull
を返します。どちらかを使用します:
Model.find( {...}, function (err, results) {
if (err) { ... }
if (!results.length) {
// do stuff here
}
}
または:
Model.findOne( {...}, function (err, result) {
if (err) { ... }
if (!result) {
// do stuff here
}
}
UserModel.find({ nick: act.params }, function (err, users) {
if (err) { console.log(err) };
if (!users.length) { //do stuff here };
else {
users.forEach(function (user) {
console.log(user.nick);
});
}
});
私が働くことがわかったものです。
私は使用しなければなりませんでした:
if(!users.length) { //etc }
動作するようにします。
res.send(data)
またはconsole.log(data)
を使用した後、コードは[]
またはempty log/ empty res.send
このコードを試してください:
if (data === null) {
console.log('record does not exist')
// or do something
}
私のプロジェクトの例
router.post('/updated-data', (req, res, next) => {
const userName = req.body.userName;
const newUserName = req.body.newUserName;
User.findOneAndUpdate({userName: userName}, {userName: newUserName}, {new: true}, (err, data) => {
if (err) {
console.log(err)
} else if (data === null || !data) {
res.send('kullanıcı bulunamadı')
} else {
console.log(newUserName)
res.send(data)
}
})
注:他の例がより役立つ場合があります。