Tất cả câu hỏi
Ngân hàng câu hỏi trắc nghiệm có giải thích chi tiết.
AWSHerokuFirebaseDigitalOceanUser.saveAll()User.insertOne()User.create({...})User.make({...})Đáp án đúng: "
User.create({
...
})". Trong Mongoose, Model.create(doc) dựng một document từ object truyền vào, chạy validation và các pre hook save, lưu xuống MongoDB rồi trả về Promise chứa chính document vừa tạo, đã có _id và các giá trị mặc định, nên đáp ứng đủ hai yêu cầu chèn mới và trả về đối tượng. "User.insertOne()" gợi nhớ phương thức insertOne của collection trong driver mongodb gốc, vốn chỉ trả về object xác nhận chứa insertedId chứ không trả về tài liệu đã tạo, và lời gọi rỗng như vậy cũng không có dữ liệu để chèn. "User.saveAll()" không tồn tại trong Mongoose; save() là phương thức của từng document, còn chèn nhiều tài liệu thì dùng insertMany(). "
User.make({
...
})" cũng không phải API nào của Mongoose.
const fs = require('fs');
function readTwoFiles(file1, file2, callback) {
fs.readFile(file1, 'utf8', (err, data1) => {
if (err) return callback(err);
fs.readFile(file2, 'utf8', (err, data2) => {
if (err) return callback(err);
callback(null, data1 + data2);
});
});
}
readTwoFiles('file1.txt', 'file2.txt', (err, result) => {
if (err) {
console.log('Error:', err.message);
} else {
console.log('Result:', result);
}
});Assume 'file1.txt' contains "Hello" and 'file2.txt' does NOT exist.
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('respond with a resource');
});
module.exports = router;const fs = require('fs');
const util = require('util');
const readFile = util.promisify(fs.readFile);
async function main() {
try {
const data = await readFile('config.json', 'utf8');
console.log('Success:', data);
} catch (err) {
console.log('Error:', err.message);
}
console.log('Done');
}
main();Assume 'config.json' does NOT exist.
Success: undefined
DoneError: ENOENT: no such file or directory, open 'config.json'
DoneDone
Error: ENOENT: no such file or directory, open 'config.json'const fs = require('fs');
fs.readFile('file.txt', 'utf8', (err, data) => {
if (err) console.log('Error occurred');
else console.log(data);
});
console.log('Reading file');Reading file
Error occurredError occurred
Reading fileconst mongoose = require('mongoose');mongoose.connect('mongodb://localhost:27017/db');
const childSchema = new mongoose.Schema({ name: String });
const parentSchema = new mongoose.Schema({ child: { type: mongoose.Schema.Types.ObjectId, ref: 'Child' } });
const Child = mongoose.model('Child', childSchema);
const Parent = mongoose.model('Parent', parentSchema);
async function run() {
const child = await Child.create({ name: 'Kid' });
await Parent.create({ child: child._id });
const parent = await Parent.findOne().populate('child');
console.log(parent.child.name);
}
run();Đáp án đúng: "Kid". Lần theo mã:
Child.create({
name: 'Kid'
}) tạo tài liệu con và trả về nó kèm _id; Parent.create lưu một tài liệu cha có trường child chỉ chứa ObjectId đó, vì parentSchema khai báo child là ObjectId với ref: 'Child'; Parent.findOne().populate('child') dùng ref để truy vấn thêm collection của model Child và thay ObjectId bằng cả tài liệu con, nên parent.child là object có name bằng Kid, và console.log(parent.child.name) in ra Kid. "The child's name if reference resolved" chỉ mô tả có điều kiện, không phải chuỗi in ra cụ thể. "Full parent document with embedded child" sai vì lệnh log chỉ in thuộc tính name, không in cả tài liệu cha. "Populated field value from linked model" là mô tả chung về cơ chế populate, không nêu kết quả cụ thể mà câu hỏi cần.
findJoin()populate()joinWith()refFetch()express.staticexpress.jsonexpress.sessionexpress.urlencodedĐáp án đúng: "
app.get('/logout', (req, res) => {
req.session.destroy((err) => {
if (err) {
console.log(err);
}
else {
res.redirect('/login');
}
}
);
});". Gói express-session gắn vào req.session một đối tượng Session có phương thức destroy(callback): nó xoá dữ liệu phiên khỏi store, bỏ req.session rồi mới gọi callback. Lần theo đoạn đúng: route GET /logout gọi destroy, chờ trong callback, nếu có err thì ghi log, nếu không mới chạy res.redirect('/login'), nên việc chuyển hướng chỉ xảy ra khi phiên đã thật sự bị huỷ. Đoạn gọi "req.session.delete()" sai vì Session của express-session không có phương thức delete, lệnh này ném TypeError trước khi kịp chuyển hướng. Đoạn gọi "req.session.remove()" cũng sai vì remove không nằm trong API của Session, kết quả là lỗi không phải hàm như trên. Đoạn gọi "req.session.invalidate()" mượn cách viết của HttpSession trong Java Servlet, mang sang Express thì không tồn tại; hơn nữa nó gọi res.redirect ngay mà không chờ store xoá xong.